S3 버킷을 AWS CloudFormation 스택으로 가져오기 성공 - 권장 가이드

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

S3 버킷을 AWS CloudFormation 스택으로 가져오기 성공

작성자: Ram Kandaswamy(AWS)

요약

Amazon Simple Storage Service(S3) 버킷과 같은 Amazon Web Services(AWS) 리소스를 사용하고 코드형 인프라(IaC) 접근 방식을 사용하려는 경우, 리소스를 AWS CloudFormation으로 가져와서 스택으로 관리할 수 있습니다.

이 패턴은 S3 버킷을 AWS CloudFormation 스택으로 성공적으로 가져오기 위한 단계를 제공합니다. 이 패턴의 접근 방식을 사용하면 S3 버킷을 한 번의 작업으로 가져올 때 발생할 수 있는 오류를 피할 수 있습니다.

사전 조건 및 제한 사항

사전 조건 

아키텍처

CloudFormation 템플릿을 사용하여 S3 버킷을 가져올 CloudFormation 스택을 생성하는 워크플로입니다.

이 다이어그램은 다음 워크플로를 보여줍니다.

  1. 사용자는 JSON 또는 YAML 형식의 AWS CloudFormation 템플릿을 생성합니다.

  2. 템플릿은 S3 버킷을 가져오기 위한 AWS CloudFormation 스택을 생성합니다.

  3. AWS CloudFormation 스택은 템플릿에서 지정한 S3 버킷을 관리합니다.

기술 스택

  • AWS 클라우드Formation

  • Identity and Access Management(IAM)

  • KMS

  • Amazon S3

도구

  • AWS CloudFormation – AWS CloudFormation을 사용하면 AWS 인프라 배포를 예상한 대로 반복해서 생성 및 프로비저닝할 수 있습니다.

  • AWS Identity and Access Management(IAM) – IAM은 AWS 서비스에 대한 액세스를 안전하게 제어하는 웹 서비스입니다.

  • AWS KMS – AWS Key Management Service(AWS KMS)는 클라우드에 맞게 규모를 조정한 암호화 및 키 관리 서비스입니다.

  • Amazon S3 – Amazon Simple Storage Service(S3)는 인터넷 스토리지 서비스입니다.

에픽

작업설명필요한 기술

템플릿을 생성하여 S3 버킷과 KMS 키를 가져옵니다.

로컬 컴퓨터에서 다음 샘플 템플릿을 사용하여 S3 버킷과 KMS 키를 가져올 템플릿을 생성합니다.

AWSTemplateFormatVersion: 2010-09-09 Parameters: bucketName: Type: String Resources: S3Bucket: Type: 'AWS::S3::Bucket' DeletionPolicy: Retain Properties: BucketName: !Ref bucketName BucketEncryption: ServerSideEncryptionConfiguration: - ServerSideEncryptionByDefault: SSEAlgorithm: 'aws:kms' KMSMasterKeyID: !GetAtt - KMSS3Encryption - Arn KMSS3Encryption: Type: 'AWS::KMS::Key' DeletionPolicy: Retain Properties: Enabled: true KeyPolicy: !Sub |- { "Id": "key-consolepolicy-3", "Version": "2012-10-17", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": ["arn:aws:iam::${AWS::AccountId}:root"] }, "Action": "kms:*", "Resource": "*" } } ] } EnableKeyRotation: true
DevOps

스택을 생성합니다.

  1. AWS Management Console에 로그인하고, AWS CloudFormation 콘솔을 열어 스택 보기를 선택하고, 스택 생성을 선택한 다음, 기존 리소스 포함(리소스 가져오기)을 선택합니다.

  2. 템플릿 파일 업로드를 선택한 다음 이전에 만든 템플릿 파일을 업로드합니다.

  3. 스택 이름을 입력하고 요구 사항에 따라 나머지 옵션을 구성합니다.

  4. 스택 생성을 선택하고 스택 상태가 IMPORT_COMPLETE로 변경될 때까지 기다립니다.

AWS DevOps

KMS 키 별칭을 생성합니다.

  1. AWS CloudFormation 콘솔에서 스택을 선택하고, 이전에 생성한 스택의 이름을 선택하고, 템플릿 창을 선택한 다음 디자이너에서 보기를 선택합니다.

  2. 템플릿의 Resource 섹션에 다음 스니펫을 추가한 다음 스택 생성을 선택하고 마법사를 완료합니다.

KMSS3EncryptionAlias: Type: 'AWS::KMS::Alias' DeletionPolicy: Retain Properties: AliasName: alias/S3BucketKey TargetKeyId: !Ref KMSS3Encryption

이에 대한 자세한 내용은 AWS CloudFormation 설명서의 AWS CloudFormation 스택이란 무엇입니까?를 참조하십시오. 

AWS DevOps

S3 버킷 정책을 포함하도록 스택을 업데이트합니다.

  1. AWS CloudFormation 콘솔에서 스택을 선택하고, 이전에 생성한 스택의 이름을 선택하고, 템플릿 창을 선택한 다음 디자이너에서 보기를 선택합니다.

  2. 템플릿의 Resource 섹션에 다음 스니펫을 추가한 다음 스택 생성을 선택하고 마법사를 완료합니다.

S3BucketPolicy: Type: 'AWS::S3::BucketPolicy' Properties: Bucket: !Ref S3Bucket PolicyDocument: !Sub |- { "Version": "2008-10-17", "Id": "restricthttp", "Statement": [ { "Sid": "denyhttp", "Effect": "Deny", "Principal": { "AWS": "*" }, "Action": "s3:*", "Resource": ["arn:aws:s3:::${S3Bucket}","arn:aws:s3:::${S3Bucket}/*"], "Condition": { "Bool": { "aws:SecureTransport": "false" } } } ] }
참고

이 S3 버킷 정책에는 안전하지 않은 API 호출을 제한하는 거부 문이 있습니다. 

DevOps

키 정책을 업데이트합니다.

  1. AWS CloudFormation 콘솔에서 스택을 선택하고, 이전에 생성한 스택의 이름을 선택하고, 템플릿 창을 선택한 다음 디자이너에서 보기를 선택합니다.

  2. 관리자가 KMS 키를 관리할 수 있도록 허용하는 키 정책을 포함하도록 템플릿의 KMS 리소스를 수정합니다.

  3. 스택 생성을 선택하고 다음을 선택한 후 요구 사항에 따라 마법사를 완료합니다.

자세한 내용은 AWS KMS 설명서의의 키 정책을 AWS KMS 참조하세요.

관리자

리소스 수준 태그를 추가합니다.

  1. AWS CloudFormation 콘솔에서 스택을 선택하고, 이전에 생성한 스택의 이름을 선택하고, 템플릿 창을 선택한 다음 디자이너에서 보기를 선택합니다.

  2. 템플릿의 Amazon S3 리소스 Properties 섹션에 다음 스니펫을 추가한 다음 스택 생성을 선택하고 마법사를 완료합니다.

Tags: - Key: createdBy Value: Cloudformation
AWS DevOps

관련 리소스

첨부

이 문서와 관련된 추가 콘텐츠에 액세스하려면 attachment.zip 파일의 압축을 풉니다.