AWS S3 跨账号迁移
目錄
- 遷移架構:
- 具體實施:
- 1. 在目標賬號創建策略(S3MigrationPolicy)和角色(S3MigrationRole)
- 2. 安裝 aws cli,并配置$ aws configure,[請參閱 AWS CLI 文檔中的安裝或更新 AWS CLI 最新版本](https://docs.aws.amazon.com/zh_cn/cli/latest/userguide/getting-started-install.html)
- 3. 假設 S3 遷移角色
- 4. 運行以下命令驗證您是否擔任了 IAM 角色:
- 5. 附加 S3 存儲桶策略
- 6. 使用 copy (cp) 或同步 (sync) 命令復制數據
- cp || sync 過程中的問題:
- 參考:
遷移架構:
具體實施:
1. 在目標賬號創建策略(S3MigrationPolicy)和角色(S3MigrationRole)
策略(S3MigrationPolicy)示例:
{"Version": "2012-10-17","Statement": [{"Effect": "Allow","Action": ["s3:ListBucket","s3:GetObject"],"Resource": ["arn:aws:s3:::awsexamplesourcebucket","arn:aws:s3:::awsexamplesourcebucket/*"]},{"Effect": "Allow","Action": ["s3:ListBucket","s3:PutObject","s3:PutObjectAcl"],"Resource": ["arn:aws:s3:::awsexampledestinationbucket","arn:aws:s3:::awsexampledestinationbucket/*"]}] }角色(S3MigrationRole)示例:
{"Version": "2012-10-17","Statement": [{"Effect": "Allow","Principal": {"AWS": "arn:aws:iam::<destination_account>:user/<user_name>"},"Action": "sts:AssumeRole","Condition": {}}] }2. 安裝 aws cli,并配置$ aws configure,請參閱 AWS CLI 文檔中的安裝或更新 AWS CLI 最新版本
3. 假設 S3 遷移角色
使用 AWS CLI 假設S3MigrationRole
aws sts assume-role --role-arn "arn:aws:iam::<destination_account>:role/S3MigrationRole" --role-session-name AWSCLI-Session這里的 –role-arn 就是上述角色 S3MigrationRole 的 arn
4. 運行以下命令驗證您是否擔任了 IAM 角色:
aws sts get-caller-identity5. 附加 S3 存儲桶策略
登錄到源賬戶的 AWS mazon 管理控制臺,并打開 Amazon S3 控制臺。選擇您的源 S3 存儲桶,然后選擇權限。在 “存儲桶策略” 下,選擇 “編輯”,然后粘貼以下存儲桶策略。選擇保存。
{"Version": "2012-10-17","Statement": [{"Sid": "DelegateS3Access","Effect": "Allow","Principal": {"AWS": "arn:aws:iam::<destination_account>:role/<RoleName>"},"Action": ["s3:ListBucket","s3:GetObject"],"Resource": ["arn:aws:s3:::awsexamplesourcebucket/*","arn:aws:s3:::awsexamplesourcebucket"]}] }此基于資源的策略允許目標角色S3MigrationRole訪問源賬戶中的 S3 對象。
??注:此處的 “Principal” 對應的值應該是運行命令 aws sts get-caller-identity 后返回的 arn 的值
6. 使用 copy (cp) 或同步 (sync) 命令復制數據
復制(有關詳細信息,請參閱 AWS CLI 命令參考):
aws s3 cp s3:// DOC-EXAMPLE-BUCKET-SOURCE / \ s3:// DOC-EXAMPLE-BUCKET-TARGET / \ --recursive --source-region SOURCE-REGION-NAME --region DESTINATION-REGION-NAME同步(有關詳細信息,請參閱 AWS CLI 命令參考):
aws s3 sync s3:// DOC-EXAMPLE-BUCKET-SOURCE / \ s3:// DOC-EXAMPLE-BUCKET-TARGET / \ --source-region SOURCE-REGION-NAME --region DESTINATION-REGION-NAMEcp || sync 過程中的問題:
部分文件在 cp || sync 時報錯:An error occurred (AccessDenied) when calling the GetObjectTagging operation: Access Denied
解決辦法:
在源桶策略中添加:“s3:GetObjectTagging” 即可。
參考:
https://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/copy-data-from-an-s3-bucket-to-another-account-and-region-by-using-the-aws-cli.html#copy-data-from-an-s3-bucket-to-another-account-and-region-by-using-the-aws-cli-architecture
總結
以上是生活随笔為你收集整理的AWS S3 跨账号迁移的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 今夜无月色
- 下一篇: 为何建议技术人写写博客呢?