LoginSignup
5
0

More than 1 year has passed since last update.

[クロスアカウント]S3バケット間でのS3sync(S3アクセスポイント編)

Last updated at Posted at 2023-01-30

はじめに

AWSアカウントを跨いで、データ・ファイル連携をしたい場面が多く、
手軽に実装できるS3を介した連携について、まとめてみました。
S3での連携方法はいくつかありますが、今回はS3アクセスポイントを使用した方法について記載します。

やりたいこと

アカウントAにあるEC2から、アカウントBが所有するS3バケットにS3アクセスポイント経由でアクセスし、アカウントAが所有するS3バケットにファイル連携がしたいです。
image.png

作成手順

ポリシーの記載内容が混乱しがちなので、主にポリシーについて記載します。

アカウントA側

  • S3バケット作成
  • EC2作成
  • EC2にアタッチするIAMロール作成
    IAMロールのポリシーは下記の通りです。
{
    "Version": "2012-10-17",
    "Statement": {
        "Effect": "Allow",
        "Action": [
            "s3:List*",
            "s3:Get*",
            "s3:Put*"
        ],
        "Resource": [
            "arn:aws:s3:::{アカウントA側のS3バケット名}/*",
            "arn:aws:s3:::{アカウントA側のS3バケット名}",
            "arn:aws:s3:::{アカウントB側のS3バケット名}/*",
            "arn:aws:s3:::{アカウントB側のS3バケット名}",
            "arn:aws:s3:{リージョン}:{アカウントB側のAWSアカウント番号}:accesspoint/{S3アクセスポイント名}",
            "arn:aws:s3:{リージョン}:{アカウントB側のAWSアカウント番号}:accesspoint/{S3アクセスポイント名}/object/*"
        ]
    }
}
  • S3エンドポイント作成

アカウントB側

  • S3バケット作成
     S3バケットのポリシーは下記の通りです。
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::{アカウントA側のAWSアカウント番号}:role/{アカウントA側のIAMロール名}"
            },
            "Action": [
                "s3:ListBucket",
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::{アカウントB側のS3バケット名}",
                "arn:aws:s3:::{アカウントB側のS3バケット名}/*"
            ],
            "Condition": {
                "StringLike": {
                    "s3:DataAccessPointArn": "{アカウントB側のS3アクセスポイントarn}"
                }
            }
        }
    ]
}
  • S3アクセスポイント作成
     S3アクセスポイントのポリシーは下記の通りです。
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::{アカウントA側のAWSアカウント番号}:role/{アカウントA側のIAMロール名}"
            },
            "Action": [
                "s3:ListBucket",
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:{リージョン}:{アカウントB側のAWSアカウント番号}:accesspoint/{アカウントB側のS3アクセスポイント名}/object/*",
                "arn:aws:s3:{リージョン}:{アカウントB側のAWSアカウント番号}:accesspoint/{アカウントB側のS3アクセスポイント名}"
            ]
        }
    ]
}
5
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
0