成功將 S3 儲存貯體匯入為 AWS CloudFormation 堆疊 - AWS Prescriptive Guidance

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

成功將 S3 儲存貯體匯入為 AWS CloudFormation 堆疊

由拉姆坎達斯瓦米(AWS)創建

環境:生產

技術:雲端原生;儲存與備份

AWS 服務:Amazon S3; AWS CloudFormation

Summary

如果您使用 Amazon Web Services (AWS) 資源,例如 Amazon Simple Storage Service (Amazon S3) 儲存貯體,並且想要使用基礎設施即程式碼 (IaC) 方法,則可以將資源匯入 AWS CloudFormation 並將其作為堆疊進行管理。

此模式提供將 S3 儲存貯體成功匯入為 AWS CloudFormation 格式堆疊的步驟。通過使用此模式的方法,您可以避免在單個操作中導入 S3 存儲桶時可能發生的錯誤。

先決條件和限制

先決條件

Architecture

此圖表顯示以下工作流程:

  1. 使用者建立 JSON 或 YAML 格式化的 AWS CloudFormation 範本。

  2. 範本會建立 AWS CloudFormation 式堆疊以匯入 S3 儲存貯體。

  3. AWS CloudFormation 式堆疊會管理您在範本中指定的 S3 儲存貯體。

技術堆疊

  • AWS CloudFormation

  • AWS Identity and Access Management (IAM)

  • AWS KMS

  • Amazon S3

工具

  • AWS CloudFormation— AWS CloudFormation 可協助您以可預期和重複的方式建立和佈建 AWS 基礎設施部署。

  • AWS Identity and Access Management (IAM)— IAM 是一種 Web 服務,可以透過它安全地控制對 AWS 服務的存取。

  • AWS KMS— AWS Key Management Service (AWS KMS) 是針對雲端擴展的加密和金鑰管理服務。

  • Amazon S3— Amazon Simple Storage Service (Amazon S3) 是網際網路儲存服務。

Epics

任務描述所需技能
創建一個模板來導入 S3 存儲桶和 CMK。

在您的本機電腦上,使用下列範例範本建立範本來匯入 S3 儲存貯體和 CMK:

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
AWD 開發
建立堆疊。
  1. 登入 AWS 管理主控台,開啟 AWS CloudFormation 主控台,然後選擇檢視堆疊中,選擇建立堆疊,然後選擇使用現有資源 (匯入資源)

  2. 選擇上傳範本檔案,然後上傳您先前建立的範本檔案。

  3. 輸入堆疊的名稱,並根據您的需求設定剩餘的選項。

  4. 選擇建立堆疊並等待堆疊的狀態變更為IMPORT_COMPLETE

AWD 開發
建立 KMS 金鑰別名。
  1. 在 AWS CloudFormation 主控台上,選擇堆疊下,選擇您先前建立堆疊的名稱,選擇您剛才建立堆疊的Template (範本)窗格,然後選擇在設計工具中檢視

  2. 將以下程式碼片段新增至Resource區段,然後選擇建立堆疊並完成精靈:

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

如需此項目的詳細資訊,請參閱AWS CloudFormation 堆疊更新在 AWS CloudFormation 文件中。 

AWD 開發
更新堆疊以包含 S3 儲存貯體政策。
  1. 在 AWS CloudFormation 主控台上,選擇堆疊下,選擇您先前建立堆疊的名稱,選擇您剛才建立堆疊的Template (範本)窗格,然後選擇在設計工具中檢視

  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 呼叫。 

AWD 開發
更新金鑰政策。
  1. 在 AWS CloudFormation 主控台上,選擇堆疊下,選擇您先前建立堆疊的名稱,選擇您剛才建立堆疊的Template (範本)窗格,然後選擇在設計工具中檢視

  2. 修改範本的 KMS 資源,以包含允許系統管理員管理 CMK 的金鑰原則。

  3. 選擇建立堆疊中,選擇下一頁,然後根據您的需求完成精靈。

如需此項目的詳細資訊,請參閱在 AWS KMS 中使用金鑰政策允許金鑰管理員來管理 CMK(位於 AWS KMS 文件) 中。

AWS 管理員
新增資源層級標籤。
  1. 在 AWS CloudFormation 主控台上,選擇堆疊下,選擇您先前建立堆疊的名稱,選擇您剛才建立堆疊的Template (範本)窗格,然後選擇在設計工具中檢視

  2. 將以下程式碼片段新增至 Amazon S3 資源Properties區段,然後選擇建立堆疊並完成精靈:

Tags: - Key: createdBy Value: Cloudformation
AWD 開發

相關資源

Attachments

attachment.zip