AWS CloudFormationリソースインポートでCloudFormationレジストリタイプのサポートが開始されました

AWS CloudFormationtとは

AWS CloudFormationは、AWSのシステム構成をテンプレート化し、管理、修正を容易にする、Amazon Web Services リソースのモデル化およびセットアップに役立つサービスです。テンプレート(JSON形式)は1回作成すると、同じ構成を何度も構築できます。

アップデート

リソースインポートでCloudFormationレジストリタイプがサポートされるようになりました。 (AWSニュースより)
レジストリにAWS以外のリソースおよびプライベートリソースなどのリソースタイプをインポートできるようになります。

特徴

CloudFormationレジストリは、AWSとサードパーティーのリソースの管理をモデル化し自動化しやすくします。

CloudFormationレジストリには、CloudFormationアカウントで使用できるプライベートとパブリックの両方のリソースが表示されます。

  • プライベートリソースプロバイダー
    AWSアカウントで使用するために明示的に登録したリソースプロバイダーです。自分で作成するか共有されているリソースプロバイダーを利用します。
    CloudFormation CLIを使用して、プライベートリソースプロバイダーを作成できます。

  • パブリックリソースプロバイダー
    特定のAWSサービスリソースを管理するためにAWSによって提供されるプロバイダーです。

CloudFormationへのリソースプロバイダーの登録

プライベートリソースプロバイダーを使用するには、まず使用するアカウントとリージョンでCloudFormationに登録する必要があります。リソースプロバイダーを登録すると、そのアカウントとリージョンのCloudFormationレジストリに表示され、スタックテンプレートで使用できます。

リソースプロバイダーを登録するにはAWS CLIのregister-typeコマンド、またはCloudFormation CLIのsubmitコマンドを使用します

  • リソースプロバイダーを登録するためのIAMアクセス許可
    リソースプロバイダーの登録の一部として、スキーマハンドラーパッケージを含むS3バケットを指定します。
    CloudFormationがこのS3バケットとスキーマハンドラーパッケージにアクセスするには、次のIAM権限が必要です。

s3:ListBucket s3:GetObject

S3バケットに対するこれらの権限をcloudformation.amazonaws.comに付与します
ポリシーの例(Using the AWS CloudFormation registryより)

 ArtifactCopyPolicy:
    Type: AWS::S3::BucketPolicy
    Properties:
      Bucket: !Ref ArtifactBucket
      PolicyDocument:
        Version: "2012-10-17"
        Statement:
          - Sid: Allow CloudFormation to copy artifacts from the bucket
            Effect: Allow
            Principal:
              Service: cloudformation.amazonaws.com
            Action:
              - s3:ListBucket
              - s3:GetObject
            Resource:
              - !Sub "arn:${AWS::Partition}:s3:::${ArtifactBucket}"
              - !Sub "arn:${AWS::Partition}:s3:::${ArtifactBucket}/*"

  • 使用するリソースプロバイダーのバージョン指定

同じリソースプロバイダーの複数のバージョンを登録することができます。
CloudFormationオペレーションに使用するリソースプロバイダーのバージョンを指定できます。

AWS CLIを使用して、使用するリソースプロバイダーのバージョンを指定する例
(Using the AWS CloudFormation registryより)

aws cloudformation set-type-default-version --type RESOURCE --type-name My::Resource::Example --version-id 00000003

リソースプロバイダーのバージョンを指定するには、set-type-default-versionコマンドを使用します。

CloudFormationで登録済みリソースプロバイダーを表示する

アカウントにリソースプロバイダーを登録すると、CloudFormationコンソールでリソースプロバイダーの詳細を表示できます。 プライベートリソースプロバイダーは、CloudFormationレジストリのプライベートセクションに表示されます。

AWS Configにリソースタイプを記録する

AWS Configがプライベートリソースタイプを自動的に追跡しリソースへの変更を記録するように指定できます。
これによりプライベートリソースタイプの構成ルールを記述して構成のベストプラクティスを確認することができます。