

# Amazon S3 バケットへのアクセスを設定する
<a name="aurora-export-snapshot.Setup"></a>

Amazon S3 バケットを特定したら、それにアクセスするアクセス許可をスナップショットに与えます。

**Topics**
+ [エクスポート先の Amazon S3 バケットの特定](#aurora-export-snapshot.SetupBucket)
+ [IAM ロールを使用した Amazon S3 バケットへのアクセスの提供](#aurora-export-snapshot.SetupIAMRole)
+ [クロスアカウント Amazon S3 バケットを使用する](#aurora-export-snapshot.Setup.XAcctBucket)
+ [クロスアカウント AWS KMS key を使用する](#aurora-export-snapshot.CMK)

## エクスポート先の Amazon S3 バケットの特定
<a name="aurora-export-snapshot.SetupBucket"></a>

DB スナップショットをエクスポートする先の Amazon S3 バケットを特定します。既存の S3 バケットを使用するか、新しい S3 バケットを作成します。

**注記**  
エクスポート先の S3 バケットは、スナップショットと同じ AWS リージョンに存在している必要があります。

Amazon S3 バケットの操作の詳細については、*Amazon Simple Storage Service ユーザーガイド*で次のトピックを参照してください。
+ [S3 バケットのプロパティを表示する方法](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/view-bucket-properties.html)
+ [Amazon S3 バケットのデフォルト暗号化を有効にする方法](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/default-bucket-encryption.html)
+ [S3 バケットを作成する方法](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/create-bucket.html)

## IAM ロールを使用した Amazon S3 バケットへのアクセスの提供
<a name="aurora-export-snapshot.SetupIAMRole"></a>

DB スナップショットデータを Amazon S3 にエクスポートする前に、スナップショットエクスポートタスクに対して Amazon S3 バケットへの書き込みアクセス権限を付与します。

このアクセス権限を付与するには、バケットへのアクセスを可能にする IAM ポリシーを作成し、次に IAM ロールを作成して、このロールにポリシーをアタッチします。後から IAM ロールをスナップショットエクスポートタスクに割り当てることができます。

**重要**  
AWS マネジメントコンソール を使用してスナップショットをエクスポートしようとする場合は、スナップショットをエクスポートするときに IAM ポリシーとロールを自動的に作成するように選択できます。手順については、「[スナップショットエクスポートタスクの作成](aurora-export-snapshot.Exporting.md)」を参照してください。

**Amazon S3 へのアクセスを DB スナップショットタスクに許可するには**

1. IAM ポリシーを作成します。このポリシーでバケットおよびオブジェクトへのアクセス許可を提供することにより、スナップショットエクスポートタスクから Amazon S3 にアクセスできるようにします。

   Amazon Aurora から S3 バケットへのファイル転送を許可するために、以下の必須アクションをポリシーに含めます。
   + `s3:PutObject*`
   + `s3:GetObject*` 
   + `s3:ListBucket` 
   + `s3:DeleteObject*`
   +  `s3:GetBucketLocation`

   ポリシーには、S3 バケットとバケット内のオブジェクトを識別するために、以下のリソースを含めます。次のリソースのリストは、Amazon S3 にアクセスするための Amazon リソースネーム (ARN) 形式を示しています。
   + `arn:aws:s3:::{{amzn-s3-demo-bucket}}`
   + `arn:aws:s3:::{{amzn-s3-demo-bucket}}/*`

   Amazon Aurora の IAM ポリシーの作成の詳細については、「[IAM データベースアクセス用の IAM ポリシーの作成と使用](UsingWithRDS.IAMDBAuth.IAMPolicy.md)」を参照してください。*IAM ユーザーガイド*の「[チュートリアル: はじめてのカスタマー管理ポリシーの作成とアタッチ](https://docs.aws.amazon.com//IAM/latest/UserGuide/tutorial_managed-policies.html)」も参照してください。

   以下の AWS CLI コマンドでは、これらのオプションを指定して、`ExportPolicy` という名前の IAM ポリシーを作成します。{{amzn-s3-demo-bucket}} という名前のバケットへのアクセスを許可します。
**注記**  
ポリシーを作成したら、ポリシーの ARN を書き留めます。ポリシーを IAM ロールにアタッチする場合、後続のステップで ARN が必要です。

   ```
   aws iam create-policy  --policy-name ExportPolicy --policy-document '{
       "Version": "2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "ExportPolicy",
               "Effect": "Allow",
               "Action": [
                   "s3:PutObject*",
                   "s3:ListBucket",
                   "s3:GetObject*",
                   "s3:DeleteObject*",
                   "s3:GetBucketLocation"
               ],
               "Resource": [
                   "arn:aws:s3:::{{amzn-s3-demo-bucket}}",
                   "arn:aws:s3:::{{amzn-s3-demo-bucket}}/*"
               ]
           }
       ]
   }'
   ```

1. IAM ロールを作成して、Aurora がこの IAM ロールがユーザーに代わって Amazon S3 バケットにアクセスすると見なすことができるようにします。詳細については、*IAM ユーザーガイド*の「[IAM ユーザーにアクセス許可を委任するロールの作成](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-user.html)」を参照してください。

   以下の例は、AWS CLI コマンドを使用して、`rds-s3-export-role` という名前のロールを作成する例を示しています。

   ```
   aws iam create-role  --role-name rds-s3-export-role  --assume-role-policy-document '{
        "Version": "2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Principal": {
               "Service": "export.rds.amazonaws.com"
             },
            "Action": "sts:AssumeRole"
          }
        ] 
      }'
   ```

1. 作成した IAM ポリシーを、作成した IAM ロールにアタッチします。

   次の AWS CLI コマンドでは、先ほど作成したポリシーを `rds-s3-export-role` という名前のロールにアタッチします。`{{your-policy-arn}}` は、以前のステップで書き留めたポリシー ARN に置き換えます。

   ```
   aws iam attach-role-policy  --policy-arn {{your-policy-arn}}  --role-name rds-s3-export-role
   ```

## クロスアカウント Amazon S3 バケットを使用する
<a name="aurora-export-snapshot.Setup.XAcctBucket"></a>

Amazon S3 バケットはAWSアカウント全体で使用できます。クロスアカウントバケットを使用するには、S3 エクスポートに使用している IAM ロールへのアクセスを許可するバケットポリシーを追加してください。詳細については、「[例 2: クロスアカウントバケット権限を付与するバケット所有者](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-walkthroughs-managing-access-example2.html)」を参照してください。バケットポリシーを追加するには
+ 次の例のように、バケットポリシーをバケットに添付します。

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Principal": {
                  "AWS": "arn:aws:iam::{{123456789012}}:role/Admin"
              },
              "Action": [
                  "s3:PutObject*",
                  "s3:ListBucket",
                  "s3:GetObject*",
                  "s3:DeleteObject*",
                  "s3:GetBucketLocation"
              ],
              "Resource": [
                  "arn:aws:s3:::{{amzn-s3-demo-destination-bucket}}",
                  "arn:aws:s3:::{{amzn-s3-demo-destination-bucket}}/*"
              ]
          }
      ]
  }
  ```

------

## クロスアカウント AWS KMS key を使用する
<a name="aurora-export-snapshot.CMK"></a>

AWS KMS keyAmazon S3 エクスポートの暗号化にクロスアカウントを使用できます。まずローカルアカウントにキーポリシーを追加し、次に外部アカウントに IAM ポリシーを追加してください。詳細については、「[その他のアカウントのユーザーに KMS キーの使用を許可する](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying-external-accounts.html)」を参照してください。

**クロスアカウント KMS キーを使用するには**

1. ローカルアカウントにキーポリシーを追加します。

   次の例は、外部アカウント 444455556666 の`ExampleRole`と`ExampleUser`に、ローカルアカウント 123456789012 のアクセス許可を付与します。

   ```
   {
       "Sid": "Allow an external account to use this KMS key",
       "Effect": "Allow",
       "Principal": {
           "AWS": [
               "arn:aws:iam::444455556666:role/ExampleRole",
               "arn:aws:iam::444455556666:user/ExampleUser"
           ]
       },
       "Action": [
           "kms:Encrypt",
           "kms:Decrypt",
           "kms:ReEncrypt*",
           "kms:GenerateDataKey*",
           "kms:CreateGrant",
           "kms:DescribeKey",
           "kms:RetireGrant"
       ],
       "Resource": "*"
   }
   ```

1. 外部アカウントに IAM ポリシーを追加する

   以下の IAM ポリシーの例では、プリンシパルがアカウント 123456789012 の KMS キーを暗号化オペレーションに使用することを許可します。アカウント 444455556666 の`ExampleRole`と`ExampleUser`にこの許可を与えるには、そのアカウントに[ポリシーをアタッチします](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-using.html#attach-managed-policy-console)。

   ```
   {
       "Sid": "Allow use of KMS key in account 123456789012",
       "Effect": "Allow",
       "Action": [
           "kms:Encrypt",
           "kms:Decrypt",
           "kms:ReEncrypt*",
           "kms:GenerateDataKey*",
           "kms:CreateGrant",
           "kms:DescribeKey",
           "kms:RetireGrant"
       ],
       "Resource": "arn:aws:kms:us-west-2:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab"
   }
   ```