

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# クロスアカウントのオフラインストアアクセス
<a name="feature-store-cross-account-access-offline-store"></a>

 Amazon SageMaker Feature Store でユーザーは、あるアカウント (アカウント 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 Feature Store 用の、データをオフラインストアに書き込むためのロールを設定します。これを実現する最も簡単な方法は、`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` です。これは、アカウント A で作成され (ステップ 1)、Amazon SageMaker Feature Store に、オフラインストアに書き込むために付与されるロールです。`Principal` には複数の ARN ロールを指定できます。

## ステップ 3: アカウント A でオフラインストア AWS KMS 暗号化キーを設定する
<a name="feature-store-setup-step3"></a>

Amazon SageMaker Feature Store では、オフラインストア内の Amazon S3 オブジェクトに対するサーバー側の暗号化が常に有効になるようになっています。クロスアカウントのユースケースでは、オフラインストアに書き込むことができるユーザー (この場合、アカウント A の`Account-A-Offline-Feature-Store-Role-ARN`) とオフラインストアから読み取ることができるユーザー (この場合、アカウント B のアイデンティティ) をコントロールできるように、カスタマーマネージドキーを指定する必要があります。

このドキュメントでは、次のキーポリシーの例を `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` それぞれに指定します。
+ `RoleArn` として `Account-A-Offline-Feature-Store-Role-ARN` を指定します。
+ `OfflineStoreConfig.S3StorageConfig.KmsKeyId` には `Account-A-Offline-Feature-Store-KMS-Key-ARN` を指定します。
+ `OfflineStoreConfig.S3StorageConfig.S3Uri` には `Account-B-Offline-Feature-Store-Bucket` を指定します。