aws s3仅允许cloudfront访问_数据迁移篇之 S3 跨账号复制

公司业务中可能涉及到内部账号之间数据的迁移,那么如何迁移整个 S3 中的数据到另外一个账户的问题可能困扰着我们。作为伊克罗德技术支持工程师008,今天就和大家来分享怎么实现跨账号的 S3 数据迁移,请准备两个 AWS 账户,和我一起开启数据迁移之旅。

46805884bae4e41c6622dc6d4f05466d.gif

要确保目标账户拥有从另一个账户复制 S3 的对象,请授予目标账户拥有跨账户复制的权限。大致按照以下步骤配置跨账户权限,将对象从账户 A 中的源存储桶复制到账户 B 中的目标存储桶:

1. 将 存储桶策略 附加到账户 A 中的源存储桶。

2. 将 AWS IAM 策略 附加到账户 B 中的目标用户。

3. 使用目标账户 B 中的 IAM 用户执行跨账户复制。

d0dbb76b3c6c45ef7910d95df51aed0f.png

1ecf5a376edf2302b0e0b9a18f3a0e25.png 具体操作步骤如下:

步骤一在账户 A 中创建 S3 存储桶。

登录账号 A, 点击 服务,进入 S3 服务控制台,并选择 创建存储桶

ddec0c8a77ee13d376a649495abf1af7.png

be0d12ac311d0aeccd2d419ea9af61bd.png

接着,设定存储桶的相关配置:

存储桶名称:请根据需要自行创建一个全球唯一的存储桶名称

区域:请根据需要自行选择;

其他配置保持默认,选择创建存储桶。

406e7cc13ed02c262c1716b6255c3718.png

2164507f7b753a45adfae37e8d3eff28.png

步骤二:将存储桶策略附加到账户 A 的源存储桶中。

选择第一步创建的 S3 存储桶,选择 权限,向下滚动,找到 存储桶策略,点击 编辑

c39f5489dd2ad439068de4d889c283af.png

将以下存储桶策略复制进去,并修改以下相关配置:

arn:aws:iam::11111111111:user/s3-demo 替换为账户 B 中 IAM 用户的 ARN

sourcebucketname 替换为在账号 A 中创建的 S3 存储桶名称;

其他配置保留默认。

{

    "Version": "2012-10-17",

    "Statement": [

        {

            "Sid": "DelegateS3Access",

            "Effect": "Allow",

            "Principal": {

                "AWS": "arn:aws:iam::11111111111:user/s3-demo"

            },

            "Action": [

                "s3:ListBucket",

                "s3:GetObject"

            ],

            "Resource": [

                "arn:aws:s3:::source_bucket_name/*",

                "arn:aws:s3:::source_bucket_name"

            ]

        }

    ]

}

步骤三:同理,在账号 B 中也创建一个 S3 存储桶,作为目标存储桶。

具体操作过程请参考步骤 1。

a2538dde0b5de9181dafa8917561b8cd.png

步骤四:在账户 B 中,创建 IAM 客户托管策略。

点击 服务,进入 IAM 服务控制台,选择 策略,选择 创建策略,接着选择 JSON。

cd84f35ab45357144067faf2637c4c4b.png

0820600a764fc7b934cc0f7508d3daf2.png

6270572a68d9650d7c3d4e761c7d57de.png

接着,将以下 IAM 策略复制进去,并修改以下相关配置:

sourcebucketname 替换为源存储桶的名称,即在账户 A 中创建的 S3 存储桶名称;

destinationbucketname 替换为目标存储桶的名称,即在账户 B 中创建的 S3 存储桶名称。

这条策略是允许 IAM 用户将对象从账户 A 中的源存储桶复制到账户 B 中的目标存储桶。

{

    "Version": "2012-10-17",

    "Statement": [

        {

            "Effect": "Allow",

            "Action": [

                "s3:ListBucket",

                "s3:GetObject"

            ],

            "Resource": [

                "arn:aws:s3:::source_bucket_name",

                "arn:aws:s3:::source_bucket_name/*"

            ]

        },

        {

            "Effect": "Allow",

            "Action": [

                "s3:ListBucket",

                "s3:PutObject",

                "s3:PutObjectAcl"

            ],

            "Resource": [

                "arn:aws:s3:::destination_bucket_name",

                "arn:aws:s3:::destination_bucket_name/*"

            ]

        }

    ]

}

再接着,选择 查看策略,输入策略的 名称和描述,最后选择 创建策略

b103b373f187ddd281e6b2d2a6e3f7a4.png

8a5e161906aa74c46099696e8dc8937e.png

3d2f663f3fa83d43e9567dd4b41fa8fc.png

步骤五:在账号 B 中,创建 IAM 用户。并将步骤 4 中的 IAM 策略附加到该用户中[1]。具体操作步骤可以参考以下官方文档:

[1] https://docs.aws.amazon.com/zh_cn/IAM/latest/UserGuide/id_users_create.html

注意:请把用户的访问密钥(访问密钥 ID 和秘密访问密钥)下载下来,后续会用到。

步骤六:在本地电脑安装AWS CLI 工具[2],并配置账号 B 的访问密钥[3]。

具体操作步骤可以参考以下官方文档:

[2] https://docs.aws.amazon.com/zh_cn/cli/latest/userguide/cli-chap-install.html

[3] https://docs.aws.amazon.com/zh_cn/cli/latest/userguide/cli-chap-configure.html

步骤七:要将账户 A 中源存储桶的所有内容同步到账户 B 中的目标存储桶。

请在账号 A 的存储桶上传一个文件,并在账户 B 中的 IAM 用户可以使用 AWS 命令行界面 (AWS CLI) 运行 sync 命令:

aws s3 sync s3://source_bucket_name  s3://destination_bucket_name

并修改以下相关配置:

sourcebucketname 替换为源存储桶的名称,即在账户 A 中创建的 S3 存储桶名称;

destinationbucketname 替换为目标存储桶的名称,即在账户 B 中创建的 S3 存储桶名称。

1674499e06ea7e340036b408ae906c33.gif


c3ef75ece58748294bb13a58f94ccd7a.gif 推荐阅读

如何在 CentOS 7 上挂载 Amazon EFS 文件系统?

Athena 帮您轻松查询分析 WAF 日志,有效阻止恶意攻击

如何应对频繁访问的网络攻击? 一招 WAF 制胜

企业如何快速无痛的更换应用程序版本?

如何高效实现音视频字幕自动生成及翻译?

Lambda@edge 轻松入手,以低延迟响应最终用户

S3 作为 AWS CloudFront 源真的安全吗?

bd9f26916970190abda4788e0eeb435e.gif

伊克罗德,

您的云端合作伙伴

bed162110fb01f18b2f7119a551433c5.gif

伊克罗德(eCloudrover)是 AWS 的核心级咨询合作伙伴(APN Premier Consulting Partner),致力于以云端优势推动企业实现数字化转型。目前伊克罗德已荣获AWS 多项能力资质认证,包括机器学习、大数据与分析、迁移、物联网、MSP、Amazon Aurora、WAF、CDN等。

6ca287abbdbf49a49c4402cb0b4c80ab.png

伊克罗德已经拥有非常成熟的技术团队,独立专责的 SAP/Oracle 团队、数据分析(Big Data) 团队、机器学习 (AI/ML) 团队、以及 AWS 培训团队。服务的客户横跨媒体、金融、制造、游戏、零售、教育等产业。伊克罗德致力于向客户提供可靠、全方位的服务。

84f4a7f30d6aa78475333046e37f64b0.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值