์์ ์
- ๊ฐ ๊ณ์ ์ ์ ์ ํ ๊ถํ๊ณผ ์ก์ธ์ค ์ ์ฑ ์ด ๋ถ์ฌ๋์ด ์๋ค๋ฉด ๋ค๋ฅธ AWS ๊ณ์ ์ S3 ๊ฐ์ฒด๋ฅผ ๋ณต์ ํ ์ ์๋ค.
- ํ์ฌ๋ AWS CLI๋ฅผ ํตํด์๋ง ๋ฒํท ๋ณต์ ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
- ๋ฒํท๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฎ๊ธธ ๋ S3 ๊ฐ์ฒด๋ฅผ ๋ค์ด๋ก๋ ํ๊ณ ์๋ก์ด S3 ๋ฒํท์ ์ฌ๋ฆฌ๋ ๋น์ฉ, ์๊ฐ, ์ ์ฐจ์ ๋ฒ๊ฑฐ๋ก์์ ํด๊ฒฐํ ์ ์์ต๋๋ค.
S3 ๋ณต์ ํ๊ธฐ
1. AMI๋ฅผ S3 ๋ฒํท์ ์ ์ฅ
- ๊ฐ ๊ณ์ ์ IAM User์ Key๋ก AWS Profile ์์ฑ (
C:\Users\[์ฌ์ฉ์์ด๋ฆ]\.aws\credentials
ํ์ผ์ Source์ Target๊ณ์ ๋ชจ๋ ๋ง๋ค๊ธฐ)
- Source ์๋ฒ ์์ฑํ ๋ณต์ฌ ํ์ธ์ ์ํด์ ํ ์คํธ ํ์ผ์ ์์ฑํ๊ธฐ
- Source ์๋ฒ์์ EC2์ AMI ์์ฑ
- Source ์๋ฒ S3์ ์
๋ก๋
### ์๋์ฐ๊ธฐ์ค aws ec2 create-store-image-task ` --image-id [AMI ๋ฒํธ] ` --bucket [S3 Bucket ์ด๋ฆ] ` --profile [Source ๊ณ์ Profile ์ด๋ฆ] ### ๋ฆฌ๋ ์ค & ๋งฅ aws ec2 create-store-image-task \ --image-id [AMI ๋ฒํธ] \ --bucket [S3 Bucket ์ด๋ฆ] \ --profile [Source ๊ณ์ Profile ์ด๋ฆ] ### ์๋์ ๊ฐ์ ๊ฒฐ๊ณผ ๋์ค๋ฉด ๋ช ๋ น ์ ์ { "ObjectKey": "ami-0b708227c90ac8a3e.bin" }
- ์
๋ก๋ ์งํ์ํฉ ํ์ธ
aws ec2 describe-store-image-tasks --profile [Source ๊ณ์ Profile ์ด๋ฆ]
- ์ ๋ก๋ ์ฑ๊ณต
- ๊ฐ ๊ณ์ ์ IAM User์ Key๋ก AWS Profile ์์ฑ (
2. Source S3์ AMI๋ฅผ → Target S3๋ก ์ ์ก
- Target ๊ณ์ ์ S3 Object์ปจํธ๋กค์ ์ํ IAM Policy (์ ์ฑ
)
s3-copy-test
์์ฑ{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetObjectTagging", ## ๋ง์ฝ S3 ๊ฐ์ฒด์ ํ๊ทธ๊ฐ ์๋ค๋ฉด ์ด ๊ถํ๋ ๋ฃ์ด์ค์ผํ๋ค! "s3:GetObject" ], "Resource": [ "arn:aws:s3:::[Source-Bucket]", "arn:aws:s3:::[Source-Bucket/*]" ] }, { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:PutObject", "s3:PutObjectAcl" ], "Resource": [ "arn:aws:s3:::[Target-Bucket]", "arn:aws:s3:::[Target-Bucket/*]" ] } ] }
- Target ๊ณ์ ์ด Target S3์์ AMI๋ฅผ ๋ณต์ํ๊ธฐ ์ํ IAM Policy (์ ์ฑ
)
ami-control-test
์์ฑ{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:DeleteObject", "s3:GetObject", "s3:ListBucket", "s3:PutObject", "s3:AbortMultipartUpload", "ebs:CompleteSnapshot", "ebs:GetSnapshotBlock", "ebs:ListChangedBlocks", "ebs:ListSnapshotBlocks", "ebs:PutSnapshotBlock", "ebs:StartSnapshot", "ec2:GetEbsEncryptionByDefault", "ec2:DescribeTags" ], "Resource": "*" } ] }
- Target ๊ณ์ IAM User์ ํด๋น ์ ์ฑ ์ ์ถ๊ฐํ๋ค.
- Source ๋ฒํท์ ๋ฒํท์ ์ฑ
์ค์
- Source ๊ณ์ → S3 → ๋ฒํท → ๊ถํ → ๋ฒํท ์ ์ฑ
- Target ๊ณ์ ์ด Source S3์ Object๋ฅผ ๋ณต์ ํ ์ ์๊ฒ ๋ฒํท ์ ์ฑ
์ ์ค์ ํ๋ค.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DelegateS3Access", "Effect": "Allow", "Principal": { "AWS": "[Target's AccountID]" }, "Action": [ "s3:ListBucket", "s3:GetObject" ], "Resource": [ "arn:aws:s3:::[Source-Bucket/*]", "arn:aws:s3:::[Source-Bucket]" ] } ] }
- Powershell์์ ๊ถํ ํ์ธ
- Source → Source S3๋ง ์ ๊ทผ๊ฐ๋ฅ
- Target → IAM ํตํด ์ ๋ฌ๋ฐ์์ Target S3 + Source S3 ์ ๊ทผ๊ฐ๋ฅ
- ๋ฒํท๋ณต์ฌ
- Target ๊ณ์ ์ ๋ณต์ ๋ฐ ๊ฒฐ๊ณผ ํ์ธ
aws s3 sync s3://[Source-Bucket-Name] s3://[Target-Bucket-Name] --profile [Target profile ์ด๋ฆ]
- ls ๋์ rm์ผ๋ก ๊ฐ์ฒด ์ญ์ ๊ฐ๋ฅ
- Target Bucket์ ํด๋น ๊ถํ์ด ์์ด์ผ ์ ์์ ์ธ ๊ถํ์ Target์ด ๊ฐ์ง๊ฒ์ด๋ค.
- ๋ฒํท→ ์ ์ฑ → ACL์์ ํ์ธ
- Target ๊ณ์ ์ ๋ณต์ ๋ฐ ๊ฒฐ๊ณผ ํ์ธ
- Target ๊ณ์ ์ S3 Object์ปจํธ๋กค์ ์ํ IAM Policy (์ ์ฑ
)
3. Target S3์์ AMI ๋ณต์
- Target ๊ณ์ ์์ AMI ๋ณต์
# ์๋์ฐ ๊ธฐ์ค aws ec2 create-restore-image-task ` --object-key [AMI num.bin] ` --bucket [Target ๋ฒํท name] ` --name "[์ํ๋ AMI ์ด๋ฆ]" ` --profile [profile ์ด๋ฆ] # ๋ฆฌ๋ ์ค & ๋งฅ aws ec2 create-restore-image-task \ --object-key [AMI num.bin] \ --bucket [Target ๋ฒํท name] \ --name "[์ํ๋ AMI ์ด๋ฆ]" \ --profile [profile ์ด๋ฆ]
- ๋ณต์ ๊ฒฐ๊ณผ ํ์ธ
- Target ๊ณ์ ์ ๋ณต์ํ AMI๋ก ์ธ์คํด์ค ์์ฑํด์ ์ ๋ณต์ฌ๋๋์ง ํ์ธ
- ์ด๊ธฐ ์์ฑํ ์๋ฒ์ ๋ง๋ ํ์ผ๋ค์ด ์ ์ฎ๊ฒจ์ก๋ค.
- Target ๊ณ์ ์์ AMI ๋ณต์
๊ฒฐ๋ก
- AWS CLI๊ฐ ์ต์ํ๊ณ , IAM, Credential๊ณผ ๊ฐ์ ๊ฐ๋ ์ ์ดํด๋๊ฐ ๋์ผ๋ฉด ์์ฃผ ํธ๋ฆฌํ ๊ธฐ๋ฅ์ด๋ค.
- ๋ฐ๋๋ก AWS CLI, IAM, Credential๊ณผ ๊ฐ์ ๊ฐ๋ ์ด ์์ง ์์ํ๋ค๋ฉด ๋ง์ด ๋ง๋งํ ๊ฒ ๊ฐ๋ค.
- ์ฝ์์ ์๊ณ AWS CLI๋ก๋ง ์ฌ์ฉ ๊ฐ๋ฅํ ๊ธฐ๋ฅ๋ค์ ๋ํ ํ๋ณด & ์ฌ์ฉ๋ฐฉ๋ฒ์ ๋ํ ์์๊ฐ ๋ ๋ง์์ก์ผ๋ฉด ์ข๊ฒ ๋ค.
Uploaded by Notion2Tistory v1.1.0