

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 계정 간 특성 그룹 검색 가능성 및 액세스
<a name="feature-store-cross-account"></a>

데이터 과학자와 데이터 엔지니어는 여러 계정에 걸쳐 있는 특성을 탐색하고 액세스하여 데이터 일관성을 높이고 협업을 간소화하며 중복 작업을 줄일 수 있습니다.

Amazon SageMaker 특성 저장소를 사용하면 계정 간에 특성 그룹 리소스를 공유할 수 있습니다. 특성 저장소에서 공유할 수 있는 리소스는 특성 그룹 엔티티 또는 특성 그룹 카탈로그이며, 특성 그룹 카탈로그에는 계정의 모든 특성 그룹 엔티티가 포함되어 있습니다. 리소스 소유자 계정은 리소스 소비자 계정과 리소스를 공유합니다. 리소스 공유와 관련된 권한에는 두 가지 범주가 있습니다.
+ **검색 가능 권한**: 검색 가능성이란 특성 그룹 이름과 메타데이터를 볼 수 있다는 의미입니다.** 특성 그룹 카탈로그를 공유하고 검색 가능 권한을 부여하면 공유하려는 계정(리소스 소유자 계정)의 모든 특성 그룹 엔티티를 공유 중인 계정(리소스 소비자 계정)에서 검색할 수 있게 됩니다. 예를 들어 리소스 소유자 계정의 특성 그룹 카탈로그를 리소스 소비자 계정이 검색할 수 있도록 설정하면 리소스 소비자 계정의 보안 주체는 리소스 소유자 계정에 포함된 모든 특성 그룹을 볼 수 있습니다. 즉, 계정 수준(리전화)에서 검색 가능성은 “전부 아니면 전혀 없습니다”. 이 권한은 특성 그룹 카탈로그 리소스 유형을 사용하여 리소스 소비자 계정에 부여됩니다.
+ **액세스 권한**: 액세스 권한을 부여할 때는 계정 수준이 아닌 특성 그룹 리소스 수준에서 권한을 부여합니다. 이를 통해 데이터에 대한 액세스 권한 부여를 보다 세밀하게 제어할 수 있습니다. 부여할 수 있는 액세스 권한 유형은 읽기 전용, 읽기-쓰기, 관리자입니다. 예를 들어, 비즈니스 요구 사항에 따라 리소스 소유자 계정의 특정 특성 그룹만 선택하여 리소스 소비자 계정의 보안 주체가 액세스할 수 있도록 할 수 있습니다. 이 권한은 특성 그룹 리소스 유형을 사용하고 특성 그룹 엔티티를 지정하여 리소스 소비자 계정에 부여됩니다.

계정 간 공유를 설정할 때는 검색 가능성과 액세스 간의 구별을 염두에 두는 것이 중요합니다. 또한 리소스 공유 방법은 특성 그룹을 온라인으로 공유하는지 오프라인으로 공유하는지에 따라 달라집니다. 온라인 및 오프라인 특성 그룹에 대한 자세한 내용은 [특성 저장소 개념](feature-store-concepts.md)섹션을 참조하세요. 다음 주제에서는 공유 리소스에 검색 가능성 및 액세스 권한을 적용하는 방법을 배웁니다.

다음 예제 다이어그램은 특성 그룹 카탈로그 리소스와 특성 그룹 리소스 엔티티를 비교하여 시각화합니다. 특성 그룹 카탈로그는 모든 특성 그룹 엔티티를 포함하며 검색 가능 권한을 사용하여 공유할 수 있습니다.** 검색 가능 권한이 부여되면 리소스 소비자 계정은 리소스 소유자 계정 내의 모든 특성 그룹 엔티티를 검색하고 발견할 수 있습니다.** 특성 그룹 엔티티에는 기계 학습 데이터가 포함되며 액세스 권한을 사용하여 공유할 수 있습니다. 액세스 권한이 부여되면 리소스 소비자 계정은 특성 그룹 데이터에 접근할 수 있으며, 액세스 권한은 관련 액세스 권한에 따라 결정됩니다.

 ![\[Example showing how a resource owner account contains a feature group catalog, which contains feature groups.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/feature-store/feature-store-cross-account-resource-types.png) 

**Topics**
+ [계정 간 검색 가능성 활성화](feature-store-cross-account-discoverability.md)
+ [계정 간 액세스 활성화](feature-store-cross-account-access.md)

# 계정 간 검색 가능성 활성화
<a name="feature-store-cross-account-discoverability"></a>

 AWS Resource Access Manager (AWS RAM)를 사용하면 모든 특성 그룹 및 특성 리소스가 포함된 특성 그룹 카탈로그를 다른 특성 그룹과 안전하게 공유할 수 있습니다 AWS 계정. 이를 통해 팀 멤버는 여러 계정에 걸쳐 있는 특성 그룹과 특성을 검색하고 발견하여 데이터 일관성을 높이고 협업을 간소화하며 중복 작업을 줄일 수 있습니다.

리소스 소유자 계정은를 사용하여 권한을 부여 AWS 계정 하여 다른 개인과 리소스를 공유할 수 있습니다 AWS RAM. 리소스 소비자 계정은 리소스가 공유되는 AWS 계정 이며, 리소스 소유자 계정에서 부여된 권한에 따라 제한됩니다. 조직인 경우 각 계정에 권한을 적용할 필요 없이 리소스를 개인 AWS Organizations, 조직의 모든 계정 또는 조직 단위(OU) AWS 계정와 공유할 수 있는를 활용할 수 있습니다. 교육용 비디오와 AWS RAM 개념 및 이점에 대한 자세한 내용은 AWS RAM 사용 설명서의 [What is AWS Resource Access Manager?](https://docs.aws.amazon.com/ram/latest/userguide/what-is.html)를 참조하세요.

이 섹션에서는 리소스 소유자 계정이 특성 그룹 카탈로그를 선택하고 리소스 소비자 계정에 검색 권한을 부여하는 방법과 검색 권한이 있는 리소스 소비자 계정이 리소스 소유자 계정 내에서 검색을 사용하고 특성 그룹을 검색하는 방법을 설명합니다. 검색 가능 권한은 액세스 권한(읽기 전용, 읽기-쓰기 또는 관리자)을 부여하지 않습니다. 액세스 권한은 계정 수준이 아닌 리소스 수준에서 부여됩니다. 이러한 액세스 권한 부여에 대한 자세한 내용은 [계정 간 액세스 활성화](feature-store-cross-account-access.md)섹션을 참조하세요.

다음 주제에서는 특성 그룹 카탈로그를 공유하는 방법과 검색 가능 권한이 적용된 공유 리소스를 검색하는 방법에 대해 설명합니다.

**Topics**
+ [특성 그룹 카탈로그를 공유합니다.](feature-store-cross-account-discoverability-share-feature-group-catalog.md)
+ [검색 가능한 리소스 검색](feature-store-cross-account-discoverability-use.md)

# 특성 그룹 카탈로그를 공유합니다.
<a name="feature-store-cross-account-discoverability-share-feature-group-catalog"></a>

특성 그룹 카탈로그 `DefaultFeatureGroupCatalog`는 리소스 소유자 계정이 소유한 모든 특성 그룹 엔티티를 포함합니다.** 카탈로그는 리소스 소유자 계정이 공유하여 단일 또는 여러 리소스 소비자 계정에 검색 가능성을 부여할 수 있습니다. 이는 AWS Resource Access Manager (AWS RAM)에서 리소스 공유를 만들어 수행됩니다. 특성 그룹은 Amazon SageMaker 특성 프로세서의 기본 리소스이며 특성 프로세서에서 관리하는 특성 정의 및 레코드로 구성됩니다. 특성 그룹에 대한 자세한 내용은 [특성 저장소 개념](feature-store-concepts.md)섹션을 참조하세요.

검색 가능성이란 리소스 소비자 계정이 검색 가능한 리소스를 검색할 수 있음을 의미합니다. 검색 가능한 리소스는 소비자가 자신의 계정에 있는 것처럼 표시됩니다(태그 제외). 특성 그룹 카탈로그를 검색할 수 있도록 허용하면 기본적으로 리소스 소비자 계정에는 액세스 권한(읽기 전용, 읽기-쓰기 또는 관리자)이 부여되지 않습니다. 액세스 권한은 계정 수준이 아닌 리소스 수준에서 부여됩니다. 이러한 액세스 권한 부여에 대한 자세한 내용은 [계정 간 액세스 활성화](feature-store-cross-account-access.md)섹션을 참조하세요.

교차 계정 검색을 활성화하려면 AWS RAM 개발자 안내서의 리소스 [AWS RAM 공유 생성](https://docs.aws.amazon.com/ram/latest/userguide/getting-started-sharing.html#getting-started-sharing-create) 지침을 사용하는 동안 SageMaker AI 리소스 카탈로그와 특성 그룹 카탈로그를 지정해야 합니다. 다음에서는 AWS RAM 콘솔 지침을 사용하기 위한 사양을 제공합니다.

1. **리소스 공유 세부 정보 지정** 
   + 리소스 유형: **SageMaker AI 리소스 카탈로그**를 선택합니다.
   + ARN: `arn:aws:sagemaker:us-east-1:111122223333:sagemaker-catalog/DefaultFeatureGroupCatalog`형식의 특성 그룹 카탈로그 ARN을 선택합니다.

     *`us-east-1`*은 리소스의 리전이고 *`111122223333`*은 리소스 소유자 계정 ID입니다.
   + 리소스 ID: `DefaultFeatureGroupCatalog`를 선택합니다.

1. **관리 권한 연결**: 
   + 관리 권한: `AWSRAMPermissionSageMakerCatalogResourceSearch`를 선택합니다.

1. **보안 주체에게 액세스 권한 부여:**
   + 보안 주체 유형(AWS 계정, 조직 또는 조직 단위)을 선택하고 적절한 ID를 입력합니다.

     조직인 경우 AWS Organizations을 활용할 수 있습니다. Organizations를 사용하면 리소스를 개별 AWS 계정계정, 조직의 모든 계정 또는 조직 단위(OU)와 공유할 수 있습니다. 이렇게 하면 각 계정에 권한을 적용할 필요 없이 권한 적용이 간소화됩니다. 리소스 공유 및 내에서 권한 부여에 대한 자세한 내용은 AWS Resource Access Manager 개발자 안내서의 [내에서 리소스 공유 활성화 AWS Organizations](https://docs.aws.amazon.com/ram/latest/userguide/getting-started-sharing.html#getting-started-sharing-orgs)를 AWS참조하세요.

1. **검토 및 생성** 
   + 검토 후 **리소스 공유 생성**을 선택합니다.

리소스 공유 및 보안 주체 또는 리소스 소비자 계정 연결이 완료되는 데 몇 분 정도 걸릴 수 있습니다. 리소스 공유와 보안 주체 연결이 설정되면 지정된 리소스 소비자 계정에 리소스 공유에 조인하라는 초대가 발송됩니다. 리소스 소비자 계정은 AWS RAM 콘솔에서 [나와 공유: 리소스 공유](https://console.aws.amazon.com/ram/home#SharedResourceShares) 페이지를 열어 초대를 보고 수락할 수 있습니다. 에서 리소스를 수락하고 보는 방법에 대한 자세한 내용은 공유된 리소스 액세스를 AWS RAM참조하세요. [AWS](https://docs.aws.amazon.com/ram/latest/userguide/working-with-shared.html) 다음과 같은 경우에는 초대가 전송되지 않습니다.
+ 에서 조직의 일부인 경우 조직 내 AWS Organizations 공유가 활성화됩니다. 이 경우 조직의 위탁자는 초대 없이 공유 리소스에 자동으로 액세스할 수 있습니다.
+ 리소스를 소유 AWS 계정 한와 공유하는 경우 해당 계정의 보안 주체는 초대 없이 공유 리소스에 자동으로 액세스할 수 있습니다.

리소스 공유 수락 및 사용에 대한 자세한 내용은 [검색 가능한 리소스 검색](feature-store-cross-account-discoverability-use.md)섹션을 참조하세요.

## 를 사용하여 특성 그룹 카탈로그 공유 AWS SDK for Python (Boto3)
<a name="feature-store-cross-account-discoverability-sagemaker-catalog-resource-type-python-sdk-example"></a>

 AWS SDK for Python (Boto3) AWS RAM APIs 사용하여 리소스 공유를 생성할 수 있습니다. 다음 코드는 *us-east-1* 리전 내의 리소스 소유자 계정 ID *`111122223333`*의 예입니다. 리소스 소유자가 *`test-cross-account-catalog`*라는 리소스 공유를 만들고 있습니다. 리소스 소유자는 리소스 소비자 계정 ID *`444455556666`*와 특성 그룹 카탈로그를 공유하고 있습니다. AWS RAM API에 Python SDK를 사용하려면 `AWSRAMPermissionSageMakerCatalogResourceSearch`정책을 실행 역할과 함께 연결합니다. 자세한 내용은 [AWS RAM API](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/ram/client/create_resource_share.html) 섹션을 참조하세요.

```
#Call list resource catalogs as a prerequisite for RAM share
sagemaker_client.list_resource_catalogs()

# Share DefaultFeatureGroupCatalog with other account
ram_client = boto3.client("ram")
response = ram_client.create_resource_share(
    name='test-cross-account-catalog', # Change to your custom resource share name
    resourceArns=[
        'arn:aws:sagemaker:us-east-1:111122223333:sagemaker-catalog/' + 'DefaultFeatureGroupCatalog', # Change 111122223333 to the resource owner account ID
    ],
    principals=[
        '444455556666', # Change 444455556666 to the resource consumer account ID
    ],
    permissionArns = ["arn:aws:ram::aws:permission/AWSRAMPermissionSageMakerCatalogResourceSearch"] # AWSRAMPermissionSageMakerCatalogResourceSearch is the only policy allowed for SageMaker Catalog
)
```

보안 주체는 보안 시스템의 행위자입니다. 리소스 기반 정책에서 허용되는 보안 주체는 IAM 사용자, IAM 역할, 루트 계정 또는 다른 AWS 서비스입니다.

# 검색 가능한 리소스 검색
<a name="feature-store-cross-account-discoverability-use"></a>

리소스 소유자 계정은 공유 리소스에 대한 검색 가능성 또는 액세스(읽기 전용, 읽기-쓰기 또는 관리자)를 허용하는 권한을 리소스 소비자 계정에 부여해야 합니다. 다음 섹션에서는 리소스 공유 초대를 수락하는 방법에 대한 지침과 검색 가능한 특성 그룹을 검색하는 방법을 보여주는 예제를 제공합니다.

**리소스 공유 초대 수락**

리소스 소유자 계정이 권한을 부여하면 리소스 소비자 계정으로 리소스 공유에 조인하라는 초대가 발송됩니다. 공유 리소스에 대한 초대를 수락하려면 AWS RAM 콘솔에서 [나와 공유: 리소스 공유](https://console.aws.amazon.com/ram/home#SharedResourceShares) 페이지를 열어 초대를 보고 응답합니다. 다음과 같은 경우에는 초대가 전송되지 않습니다.
+ 의 조직에 속 AWS Organizations 해 있고 조직 내 공유가 활성화된 경우 조직의 보안 주체는 초대 없이 공유 리소스에 자동으로 액세스할 수 있습니다.
+ 리소스를 소유 AWS 계정 한와 공유하는 경우 해당 계정의 보안 주체는 초대 없이 공유 리소스에 자동으로 액세스할 수 있습니다.

에서 리소스 공유를 수락하고 사용하는 방법에 대한 자세한 내용은 리소스 공유 초대에 응답을 AWS RAM참조하세요. [https://docs.aws.amazon.com/ram/latest/userguide/getting-started-shared.html](https://docs.aws.amazon.com/ram/latest/userguide/getting-started-shared.html) 

## 검색 가능한 특성 그룹 검색 예제
<a name="feature-store-cross-account-discoverability-use-search"></a>

검색 가능성 권한이 적용된 리소스 소비자 계정과 리소스를 공유하는 경우, 리소스 소비자 계정은 콘솔 UI와 Feature Store SDK를 사용하여 Amazon SageMaker Feature Store에서 공유 리소스를 검색하고 발견할 수 있습니다. 태그로는 계정 간 리소스를 검색할 수 없다는 점에 유의하세요. 볼 수 있는 특성 그룹 카탈로그의 최대 개수는 1,000개입니다. 검색 가능 권한 부여 방법에 대한 자세한 내용은 [계정 간 검색 가능성 활성화](feature-store-cross-account-discoverability.md)섹션을 참조하세요.

콘솔에서 공유 특성 그룹을 보는 방법에 대한 자세한 내용은 [특성 저장소에서 특성 그룹을 찾아보세요.](feature-store-search-feature-group-metadata.md) 섹션을 참조하세요.

다음 예시에서 리소스 소비자 계정은 SageMaker AI 검색을 사용하여 `CrossAccountFilterOption`이 `"CrossAccount"`로 설정된 경우 검색 가능한 리소스를 검색합니다.

```
from sagemaker.session import Session

sagemaker_session = Session(boto_session=boto_session)

sagemaker_session.search(
    resource="FeatureGroup",
    search_expression={
        "Filters": [
            {
                "Name": "FeatureGroupName",
                "Value": "MyFeatureGroup",
                "Operator": "Contains",
            }
        ],
        "Operator": "And",
    },
    sort_by="Name",
    sort_order="Ascending",
    next_token="token",
    max_results=50,
    CrossAccountFilterOption="CrossAccount"
)
```

SageMaker AI 검색 및 요청 파라미터에 대한 자세한 내용은 Amazon SageMaker API 참의 [Search](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_Search.html)를 참조하세요.

# 계정 간 액세스 활성화
<a name="feature-store-cross-account-access"></a>

액세스 권한은 읽기 전용, 읽기-쓰기 및 관리자 권한입니다. 권한 이름, 설명, 각 권한에 사용할 수 있는 특정 API 목록은 다음과 같습니다.
+ 읽기 전용 권한 (`AWSRAMPermissionSageMakerFeatureGroupReadOnly`): 읽기 권한을 사용하면 리소스 소비자 계정이 공유된 특성 그룹의 레코드를 읽고 세부 정보 및 메타데이터를 볼 수 있습니다.
  + `DescribeFeatureGroup`: 특성 그룹 및 해당 구성에 대한 세부 정보를 검색합니다.
  + `DescribeFeatureMetadata`: 특성 그룹 내 특성에 대한 메타데이터를 표시합니다.
  + `BatchGetRecord`: 특성 그룹에서 레코드 배치를 가져옵니다.
  + `GetRecord`: 특성 그룹에서 레코드를 가져옵니다.
+ 읽기-쓰기 권한 (`AWSRAMPermissionSagemakerFeatureGroupReadWrite`): 읽기-쓰기 권한을 사용하면 리소스 소비자 계정이 읽기 권한 외에도 공유된 특성 그룹에 레코드를 쓰고, 공유된 특성 그룹에서 레코드를 삭제할 수 있습니다.
  + `PutRecord`: 특성 그룹에 레코드를 씁니다.
  + `DeleteRecord`: 특성 그룹에서 레코드를 삭제합니다.
  + `AWSRAMPermissionSageMakerFeatureGroupReadOnly`의 API 목록
+ 관리자 권한 (`AWSRAMPermissionSagemakerFeatureGroupAdmin`): 관리자 권한을 통해 리소스 소비자 계정은 읽기-쓰기 권한 외에도 공유된 특성 그룹 내 특성의 설명과 파라미터를 업데이트하고, 공유된 특성 그룹의 구성을 업데이트할 수 있습니다.
  + `DescribeFeatureMetadata`: 특성 그룹 내 특성에 대한 메타데이터를 표시합니다.
  + `UpdateFeatureGroup`: 특성 그룹 구성을 업데이트합니다.
  + `UpdateFeatureMetadata`: 특성 그룹에 있는 특성의 설명과 파라미터를 업데이트합니다.
  + `AWSRAMPermissionSagemakerFeatureGroupReadWrite`의 API 목록

다음 항목에서는 온라인 저장소와 오프라인 특성 그룹을 공유하는 방법을 배웁니다.공유와 관련하여 두 특성 그룹 간에는 차이가 있습니다.

**Topics**
+ [와 온라인 특성 그룹 공유 AWS Resource Access Manager](feature-store-cross-account-access-online-store.md)
+ [계정 간 오프라인 저장소 액세스](feature-store-cross-account-access-offline-store.md)

# 와 온라인 특성 그룹 공유 AWS Resource Access Manager
<a name="feature-store-cross-account-access-online-store"></a>

 AWS Resource Access Manager (AWS RAM)를 사용하면 Amazon SageMaker 특성 저장소 온라인 특성 그룹을 다른와 안전하게 공유할 수 있습니다 AWS 계정. 팀 멤버는 여러 계정에 걸쳐 있는 특성 그룹을 검색하고 액세스하여 데이터 일관성을 높이고 협업을 간소화하며 중복 작업을 줄일 수 있습니다.

리소스 소유자 계정은를 사용하여 권한을 부여 AWS 계정 하여 다른 개인과 리소스를 공유할 수 있습니다 AWS RAM. 리소스 소비자 계정은 리소스가 공유되는 AWS 계정 이며, 리소스 소유자 계정에서 부여된 권한에 따라 제한됩니다. 조직인 경우 각 계정에 권한을 적용할 필요 없이 리소스를 개인 AWS Organizations, 조직의 모든 계정 또는 조직 단위(OU) AWS 계정와 공유할 수 있는를 활용할 수 있습니다. 교육용 비디오와 AWS RAM 개념 및 이점에 대한 자세한 내용은 AWS RAM 사용 설명서의 [What is AWS Resource Access Manager?](https://docs.aws.amazon.com/ram/latest/userguide/what-is.html)를 참조하세요.

각 AWS 계정에 대하여 API당 초당 트랜잭션 수(TPS)에는 최대 한도가 있음에 유의하시기 바랍니다. 최대 TPS 한도는 리소스 소유자 계정 내 리소스의 모든 트랜잭션에 적용되므로 리소스 소비자 계정의 트랜잭션도 이 최대 한도에 포함됩니다.** 서비스 할당량과 할당량 증가를 요청하는 방법에 대한 자세한 내용은 [AWS 서비스 할당량](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html)을 참조하세요.

이 섹션에서는 리소스 소유자 계정이 특성 그룹을 선택하고 리소스 소비자 계정에 액세스 권한(읽기 전용, 읽기-쓰기 및 관리자)을 부여하는 방법과 액세스 권한이 있는 리소스 소비자 계정이 이러한 특성 그룹을 사용할 수 있는 방법을 다룹니다. 액세스 권한으로는 리소스 소비자 계정이 특성 그룹을 검색하고 발견할 수 없습니다. 리소스 소비자 계정이 리소스 소유자 계정에서 특성 그룹을 검색하고 발견할 수 있도록 하려면 리소스 소유자 계정이 리소스 소비자 계정에 검색 가능 권한을 부여해야 합니다.이 경우 리소스 소비자 계정에서 리소스 소유자 계정 내의 모든 특성 그룹을 검색할 수 있습니다. 검색 가능 권한 부여 방법에 대한 자세한 내용은 [계정 간 검색 가능성 활성화](feature-store-cross-account-discoverability.md)섹션을 참조하세요.

다음 주제에서는 AWS RAM 콘솔을 사용하여 특성 저장소 온라인 저장소 리소스를 공유하는 방법을 보여줍니다. 콘솔 또는 AWS Command Line Interface (AWS CLI)를 AWS 사용하여 리소스 공유 및 내에서 권한 부여에 AWS RAM 대한 자세한 내용은 [리소스 공유를 참조하세요 AWS](https://docs.aws.amazon.com/ram/latest/userguide/getting-started-sharing.html).

**Topics**
+ [특성 그룹 엔티티 공유](feature-store-cross-account-access-online-store-share-feature-group.md)
+ [액세스 권한이 있는 온라인 저장소 공유 리소스 사용](feature-store-cross-account-access-online-store-use.md)

# 특성 그룹 엔티티 공유
<a name="feature-store-cross-account-access-online-store-share-feature-group"></a>

리소스 소유자 계정은 Amazon SageMaker 특성 저장소의 특성 그룹 리소스 유형을 사용하여 AWS Resource Access Manager ()에서 리소스 공유를 생성하여 특성 그룹 개체를 공유할 수 있습니다AWS RAM.

 AWS RAM 사용 설명서의 [AWS 리소스 공유](https://docs.aws.amazon.com/ram/latest/userguide/getting-started-sharing.html#getting-started-sharing-create) 지침과 함께 다음 지침을 사용합니다.

 AWS RAM 콘솔을 사용하여 특성 그룹 리소스 유형을 공유할 때는 다음 사항을 선택해야 합니다.

1. **리소스 공유 세부 정보 지정** 
   + 리소스 유형: **SageMaker AI 특성 그룹**을 선택합니다.
   + ARN: `arn:aws:sagemaker:us-east-1:111122223333:feature-group/your-feature-group-name`형식으로 특성 그룹 ARN을 선택합니다.

     `us-east-1`은 리소스의 리전, `111122223333`은 리소스 소유자 계정 ID, `your-feature-group-name`은 공유하려는 특성 그룹 이름입니다.
   + 리소스 ID: 액세스 권한을 부여하려는 특성 그룹 `your-feature-group-name`을 선택합니다.

1. **관리 권한 연결**: 
   + 관리 권한: 액세스 권한을 선택합니다. 액세스 권한에 대한 자세한 내용은 [계정 간 액세스 활성화](feature-store-cross-account-access.md)을 참조하세요.

1. **보안 주체에게 액세스 권한 부여:**
   + 보안 주체 유형(AWS 계정, 조직, 조직 단위, IAM 역할 또는 IAM 사용자)을 선택하고 적절한 ID 또는 ARN을 입력합니다.

1. **검토 및 생성** 
   + 검토 후 **리소스 공유 생성**을 선택합니다.

액세스 권한을 부여해도 리소스 소비자 계정에는 검색 가능 권한이 부여되지 않으므로, 액세스 권한이 있는 리소스 소비자 계정은 해당 특성 그룹을 검색하고 발견할 수 없습니다. 리소스 소비자 계정이 리소스 소유자 계정에서 특성 그룹을 검색하고 발견할 수 있도록 하려면 리소스 소유자 계정이 리소스 소비자 계정에 검색 권한을 부여해야 합니다.이를 통해 리소스 소비자 계정에서 리소스 소유자 계정 내의 모든 특성 그룹을 리소스 소비자 계정으로 검색할 수 있습니다.** 검색 권한 부여에 대한 자세한 내용은 [계정 간 검색 가능성 활성화](feature-store-cross-account-discoverability.md)섹션을 참조하세요.

리소스 소비자 계정에 액세스 권한만 부여된 경우에도 AWS RAM에서 특성 그룹 엔티티는 계속 볼 수 있습니다. 에서 리소스를 보려면 AWS RAM 사용 설명서의 공유 리소스 액세스를 AWS RAM참조하세요. [AWS](https://docs.aws.amazon.com/ram/latest/userguide/working-with-shared.html) 

리소스 공유 및 보안 주체 또는 리소스 소비자 계정 연결이 완료되는 데 몇 분 정도 걸릴 수 있습니다. 리소스 공유와 보안 주체 연결이 설정되면 지정된 리소스 소비자 계정에 리소스 공유에 조인하라는 초대가 발송됩니다. 리소스 소비자 계정은 AWS RAM 콘솔에서 [나와 공유: 리소스 공유](https://console.aws.amazon.com/ram/home#SharedResourceShares) 페이지를 열어 초대를 보고 수락할 수 있습니다. 다음과 같은 경우에는 초대가 전송되지 않습니다.
+ 의 조직에 속 AWS Organizations 해 있고 조직 내 공유가 활성화된 경우 조직의 보안 주체는 초대 없이 공유 리소스에 자동으로 액세스할 수 있습니다.
+ 리소스를 소유 AWS 계정 한와 공유하는 경우 해당 계정의 보안 주체는 초대 없이 공유 리소스에 자동으로 액세스할 수 있습니다.

에서 리소스 공유를 수락하고 사용하는 방법에 대한 자세한 내용은 AWS RAM 사용 설명서의 [공유 AWS 리소스 사용을](https://docs.aws.amazon.com/ram/latest/userguide/getting-started-shared.html) AWS RAM참조하세요.

## 를 사용하여 온라인 스토어 특성 그룹 공유 AWS SDK for Python (Boto3)
<a name="feature-store-cross-account-access-online-store-python-sdk-example"></a>

 AWS SDK for Python (Boto3) AWS RAM APIs 사용하여 리소스 공유를 생성할 수 있습니다. 다음 코드는 리소스 소유자 계정 ID `111122223333`이 `'test-cross-account-fg'`라는 이름의 리소스 공유를 생성하고, `AWSRAMPermissionSageMakerFeatureGroupReadOnly`권한을 부여하여 리소스 소비자 계정 ID `444455556666`과 특성 그룹 `'my-feature-group'`을 공유하는 예제입니다. 액세스 권한에 대한 자세한 내용은 [계정 간 액세스 활성화](feature-store-cross-account-access.md)을 참조하세요. AWS RAM APIs용 Python SDK를 사용하려면 AWS RAM 전체 액세스 관리형 정책을 실행 역할에 연결해야 합니다. 자세한 내용은 [create\$1resource\$1share](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/ram/client/create_resource_share.html) AWS RAM API를 참조하세요.

```
import boto3

# Choose feature group name
feature_group_name = 'my-feature-group' # Change to your feature group name 

# Share 'my-feature-group' with other account
ram_client = boto3.client("ram")
response = ram_client.create_resource_share(
    name='test-cross-account-fg', # Change to your custom resource share name
    resourceArns=[
        'arn:aws:sagemaker:us-east-1:111122223333:feature-group/' + feature_group_name, # Change 111122223333 to the resource owner account ID
    ],
    principals=[
        '444455556666', # Change 444455556666 to the resource consumer account ID
    ],
    permissionArns = ["arn:aws:ram::aws:permission/AWSRAMPermissionSageMakerFeatureGroupReadOnly"]
)
```

보안 주체는 보안 시스템의 행위자입니다. 리소스 기반 정책에서 허용되는 보안 주체는 IAM 사용자, IAM 역할, 루트 계정 또는 다른 AWS 서비스입니다.

# 액세스 권한이 있는 온라인 저장소 공유 리소스 사용
<a name="feature-store-cross-account-access-online-store-use"></a>

리소스 소유자 계정은 공유 리소스에 대한 검색 가능성, 읽기 전용, 쓰기 또는 관리자 기능을 허용하는 권한을 리소스 소비자 계정에 부여해야 합니다. 다음 섹션에서는 공유 리소스 액세스 초대를 수락하는 방법에 대한 지침을 제공하고 공유 특성 그룹을 보고 상호 작용하는 방법을 보여주는 예를 제공합니다.

** AWS RAM을 사용하여 공유 리소스 액세스 초대 수락**

리소스 소유자 계정이 권한을 부여하면 리소스 소비자 계정으로 리소스 공유에 조인하라는 초대가 발송됩니다. 공유 리소스에 대한 초대를 수락하려면 AWS RAM 콘솔에서 [나와 공유: 리소스 공유](https://console.aws.amazon.com/ram/home#SharedResourceShares) 페이지를 열어 초대를 보고 응답합니다. 다음과 같은 경우에는 초대가 전송되지 않습니다.
+ 의 조직에 속 AWS Organizations 해 있고 조직 내 공유가 활성화된 경우 조직의 보안 주체는 초대 없이 공유 리소스에 자동으로 액세스할 수 있습니다.
+ 리소스를 소유 AWS 계정 한와 공유하는 경우 해당 계정의 보안 주체는 초대 없이 공유 리소스에 자동으로 액세스할 수 있습니다.

에서 리소스 공유를 수락하고 사용하는 방법에 대한 자세한 내용은 AWS RAM 사용 설명서의 [공유 AWS 리소스 사용을](https://docs.aws.amazon.com/ram/latest/userguide/getting-started-shared.html) AWS RAM참조하세요.

## AWS RAM 콘솔에서 공유 리소스 보기
<a name="feature-store-cross-account-access-online-store-use-view"></a>

액세스 권한을 부여해도 리소스 소비자 계정에는 검색 권한이 부여되지 않으므로, 액세스 권한이 있는 리소스 소비자 계정은 해당 특성 그룹을 검색하고 발견할 수 없습니다. 리소스 소비자 계정이 리소스 소유자 계정에서 특성 그룹을 검색하고 검색할 수 있도록 하려면 리소스 소유자 계정이 리소스 소비자 계정에 검색 권한을 부여해야 합니다.리소스 소비자 계정에서는 리소스 소유자 계정 내의 모든 특성 그룹을 리소스 소비자 계정으로 검색할 수 있습니다. 검색 권한 부여에 대한 자세한 내용은 [계정 간 검색 가능성 활성화](feature-store-cross-account-discoverability.md)섹션을 참조하세요.

 AWS RAM 콘솔에서 공유 리소스를 보려면 AWS RAM 콘솔에서 [나와 공유: 리소스 공유](https://console.aws.amazon.com/ram/home#SharedResourceShares) 페이지를 엽니다.

## 공유 특성 그룹을 사용한 읽기 및 쓰기 작업 예제
<a name="feature-store-cross-account-access-online-store-use-read-write-actions"></a>

리소스 소유자 계정이 리소스 소비자 계정에 적절한 권한을 부여한 후에는 특성 저장소 SDK를 사용하여 공유 리소스에서 작업을 수행할 수 있습니다. 리소스 ARN을 `FeatureGroupName`으로 제공하여 이렇게 할 수 있습니다. 특성 그룹 ARN을 가져오려면 함수를 AWS SDK for Python (Boto3) [https://boto3.amazonaws.com/v1/documentation/api/1.26.98/reference/services/sagemaker/client/describe_feature_group.html#describe-feature-group](https://boto3.amazonaws.com/v1/documentation/api/1.26.98/reference/services/sagemaker/client/describe_feature_group.html#describe-feature-group) 사용하거나 콘솔 UI를 사용할 수 있습니다. 콘솔 UI를 사용하여 특성 그룹 세부 정보를 보는 방법에 대한 자세한 내용은 [콘솔에서 특성 그룹 세부 정보 보기](feature-store-use-with-studio.md#feature-store-view-feature-group-detail-studio) 섹션을 참조하세요.

다음 예제에서는 공유 특성 그룹 엔티티와 함께 `PutRecord`, `GetRecord`를 사용합니다. [https://boto3.amazonaws.com/v1/documentation/api/1.26.98/reference/services/firehose/client/put_record.html#put-record](https://boto3.amazonaws.com/v1/documentation/api/1.26.98/reference/services/firehose/client/put_record.html#put-record) 및에 대한 AWS SDK for Python (Boto3) 설명서의 요청 및 응답 구문을 참조하세요[https://boto3.amazonaws.com/v1/documentation/api/1.26.98/reference/services/sagemaker-featurestore-runtime/client/get_record.html#get-record](https://boto3.amazonaws.com/v1/documentation/api/1.26.98/reference/services/sagemaker-featurestore-runtime/client/get_record.html#get-record).

```
import boto3

sagemaker_featurestore_runtime = boto3.client('sagemaker-featurestore-runtime')

# Put record into feature group named 'test-fg' within the resource owner account ID 111122223333
featurestore_runtime.put_record(
    FeatureGroupName="arn:aws:sagemaker:us-east-1:111122223333:feature-group/test-fg", 
    Record=[value.to_dict() for value in record] # You will need to define record prior to calling PutRecord
)
```

```
import boto3

sagemaker_featurestore_runtime = boto3.client('sagemaker-featurestore-runtime')

# Choose record identifier
record_identifier_value = str(2990130)

# Get record from feature group named 'test-fg' within the resource owner account ID 111122223333
featurestore_runtime.get_record(
    FeatureGroupName="arn:aws:sagemaker:us-east-1:111122223333:feature-group/test-fg", 
    RecordIdentifierValueAsString=record_identifier_value
)
```

특성 그룹 엔터티 권한 부여에 대한 자세한 내용은 [특성 그룹 엔티티 공유](feature-store-cross-account-access-online-store-share-feature-group.md)섹션을 참조하세요.

# 계정 간 오프라인 저장소 액세스
<a name="feature-store-cross-account-access-offline-store"></a>

 Amazon SageMaker 특성 프로세서를 사용하면 사용자가 한 계정(A 계정)에서 특성 그룹을 생성하고 다른 계정(B 계정)의 Amazon S3 버킷을 사용하여 오프라인 저장소에 특성 그룹을 구성할 수 있습니다. 다음 섹션의 단계를 사용하여 이를 설정할 수 있습니다.

**Topics**
+ [1단계: A 계정에서 오프라인 저장소 액세스 역할 설정](#feature-store-setup-step1)
+ [2단계: B 계정에서 오프라인 저장소 Amazon S3 버킷을 설정합니다.](#feature-store-setup-step2)
+ [3단계: 계정 A에서 오프라인 저장소 AWS KMS 암호화 키 설정](#feature-store-setup-step3)
+ [4단계: A 계정에 특성 그룹 생성](#feature-store-setup-step4)

## 1단계: A 계정에서 오프라인 저장소 액세스 역할 설정
<a name="feature-store-setup-step1"></a>

먼저 Amazon SageMaker 특성 저장소의 역할을 설정하여 오프라인 저장소에 데이터를 기록합니다. 이 작업을 수행하는 가장 간단한 방법은 `AmazonSageMakerFeatureStoreAccess`정책을 사용하여 새 역할을 생성하거나 `AmazonSageMakerFeatureStoreAccess`정책이 이미 연결된 기존 역할을 사용하는 것입니다. 이 문서에서는 이 정책을 `Account-A-Offline-Feature-Store-Role-ARN`으로 참조합니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetBucketAcl",
                "s3:PutObjectAcl"
            ],
            "Resource": [
                "arn:aws:s3:::*SageMaker*",
                "arn:aws:s3:::*Sagemaker*",
                "arn:aws:s3:::*sagemaker*"
            ]
        }
    ]
}
```

------

위의 코드 스니펫은 `AmazonSageMakerFeatureStoreAccess`정책을 보여줍니다. 이 정책의 `Resource`섹션 범위는 기본적으로 `SageMaker`, `Sagemaker`또는 `sagemaker`를 포함하는 이름을 가진 S3 버킷으로 제한됩니다. 즉, 사용 중인 오프라인 저장소 Amazon S3 버킷은 이 명명 규칙을 따라야 합니다. 이 경우가 아니거나 리소스의 범위를 더 좁히려면 정책을 콘솔의 Amazon S3 버킷 정책에 복사하여 붙여넣고 `Resource`섹션을 `arn:aws:s3:::your-offline-store-bucket-name`으로 사용자 지정한 다음 역할에 연결할 수 있습니다.

또한이 역할에는 AWS KMS 권한이 연결되어 있어야 합니다. 최소한 고객 관리형 키를 사용하여 오프라인 저장소에 글을 쓸 수 있도록 `kms:GenerateDataKey`권한이 필요합니다. 계정 간 시나리오에서 고객 관리형 키가 필요한 이유와 설정 방법에 대해 알아보려면 3단계를 참조하세요. 다음 정책은 인라인 정책을 보여줍니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "kms:GenerateDataKey"
            ],
            "Resource": "arn:aws:kms:*:111122223333:key/*"
        }
    ]
}
```

------

이 정책의 `Resource`섹션은 A 계정의 모든 키로 범위가 지정됩니다.범위를 더 좁히려면 3단계에서 오프라인 저장소 KMS 키를 설정한 후 이 정책으로 돌아가 키 ARN으로 바꾸세요.

## 2단계: B 계정에서 오프라인 저장소 Amazon S3 버킷을 설정합니다.
<a name="feature-store-setup-step2"></a>

B 계정에 Amazon S3 버킷을 생성합니다. 기본 `AmazonSageMakerFeatureStoreAccess`정책을 사용하는 경우 버킷 이름에 `SageMaker`, `Sagemaker`또는 `sagemaker`가 포함되어야 합니다. 다음 예와 같이 버킷 정책을 편집하여 A 계정이 객체를 읽고 쓸 수 있도록 허용합니다.

이 문서에서는 다음 예제 버킷 정책을 `Account-B-Offline-Feature-Store-Bucket`으로 참조합니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "S3CrossAccountBucketAccess",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:PutObjectAcl",
                "s3:GetBucketAcl"
            ],
            "Principal": {
                "AWS": [
                    "Account-A-Offline-Feature-Store-Role-ARN"
                ]
            },
            "Resource": [
                "arn:aws:s3:::offline-store-bucket-name/*",
                "arn:aws:s3:::offline-store-bucket-name"
            ]
        }
    ]
}
```

------

위 정책에서 보안 주체는 `Account-A-Offline-Feature-Store-Role-ARN`이며, 1단계에서 A 계정에 생성되어 오프라인 저장소에 쓰기 권한으로 Amazon SageMake 특성 저장소에 제공되는 역할입니다. `Principal`에서 여러 ARN 역할을 제공할 수 있습니다.

## 3단계: 계정 A에서 오프라인 저장소 AWS KMS 암호화 키 설정
<a name="feature-store-setup-step3"></a>

Amazon SageMaker 특성 저장소는 오프라인 저장소의 Amazon S3 객체에 대해 서버 측 암호화가 항상 활성화되도록 합니다. 계정 간 사용 사례의 경우, 오프라인 저장소에 쓸 수 있는 사용자(이 경우 A 계정의 `Account-A-Offline-Feature-Store-Role-ARN`)와 오프라인 저장소에서 읽을 수 있는 사용자(이 경우 B 계정의 ID)를 제어할 수 있도록 고객 관리형 키를 제공해야 합니다.

이 문서에서는 다음 예제 키 정책을 `Account-A-Offline-Feature-Store-KMS-Key-ARN`으로 참조합니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "key-consolepolicy-3",
    "Statement": [
        {
            "Sid": "Enable IAM User Permissions",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:root"
            },
            "Action": "kms:*",
            "Resource": "*"
        },
        {
            "Sid": "Allow access for Key Administrators",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                "arn:aws:iam::111122223333:role/Administrator"
                ]
            },
            "Action": [
                "kms:Create*",
                "kms:Describe*",
                "kms:Enable*",
                "kms:List*",
                "kms:Put*",
                "kms:Update*",
                "kms:Revoke*",
                "kms:Disable*",
                "kms:Get*",
                "kms:Delete*",
                "kms:TagResource",
                "kms:UntagResource",
                "kms:ScheduleKeyDeletion",
                "kms:CancelKeyDeletion"
            ],
            "Resource": "*"
        },
        {
            "Sid": "Allow Feature Store to get information about the customer managed key",
            "Effect": "Allow",
            "Principal": {
                "Service": "sagemaker.amazonaws.com"
            },
            "Action": [
                "kms:Describe*",
                "kms:Get*",
                "kms:List*"
            ],
            "Resource": "*"
        },
        {
            "Sid": "Allow use of the key",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "Account-A-Offline-Feature-Store-Role-ARN",
                    "arn:aws:iam::444455556666:root"
                ]
            },
            "Action": [
                "kms:Encrypt",
                "kms:Decrypt",
                "kms:DescribeKey",
                "kms:CreateGrant",
                "kms:RetireGrant",
                "kms:ReEncryptFrom",
                "kms:ReEncryptTo",
                "kms:GenerateDataKey",
                "kms:ListAliases",
                "kms:ListGrants"
            ],
            "Resource": "*"
        }
    ]
}
```

------

## 4단계: A 계정에 특성 그룹 생성
<a name="feature-store-setup-step4"></a>

다음으로, B 계정에 오프라인 저장소 Amazon S3 버킷을 사용하여 A 계정에 특성 그룹을 생성합니다.이렇게 하려면 `RoleArn`, `OfflineStoreConfig.S3StorageConfig.KmsKeyId`, `OfflineStoreConfig.S3StorageConfig.S3Uri`에 대해 각각 다음 파라미터를 제공합니다.
+ `Account-A-Offline-Feature-Store-Role-ARN`을 `RoleArn`으로 제공합니다.
+ `Account-A-Offline-Feature-Store-KMS-Key-ARN`을 `OfflineStoreConfig.S3StorageConfig.KmsKeyId`에 제공합니다.
+ `Account-B-Offline-Feature-Store-Bucket`을 `OfflineStoreConfig.S3StorageConfig.S3Uri`에 제공합니다.