

これは AWS CDK v2 デベロッパーガイドです。旧版の CDK v1 は 2022 年 6 月 1 日にメンテナンスを開始し、2023 年 6 月 1 日にサポートを終了しました。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# AWS CloudFormation パブリックレジストリのリソースの使用
<a name="use-cfn-public-registry"></a>

AWS CloudFormation パブリックレジストリを使用すると、AWS アカウントで使用できるリソース、モジュール、フックなど、パブリックとプライベートの両方の拡張が管理できます。[https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.CfnResource.html](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.CfnResource.html) コンストラクトでは、AWS Cloud Development Kit (AWS CDK) アプリケーションでパブリックリソース拡張機能を使用できます。

AWS CloudFormation パブリックレジストリの詳細については、「*AWS CloudFormation ユーザーガイド*」の「[AWS CloudFormation レジストリの使用](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/registry.html)」を参照してください。

AWS によって発行されたすべてのパブリック拡張機能は、ユーザーが何もしなくてもすべてのリージョンにすべてのアカウントで使用できます。ただし、使用する各アカウントおよびリージョンで、使用する各サードパーティーの拡張機能を有効にする必要があります。

**注記**  
AWS CloudFormation をサードパーティーのリソースタイプと使用すると、料金が発生します。料金は、1 ヶ月あたりに実行するハンドラーオペレーションの数およびハンドラーオペレーション期間に基づきます。詳細については、「[CloudFormation の料金](https://aws.amazon.com/cloudformation/pricing/)」を参照してください。

パブリック拡張機能の詳細については、「* AWS CloudFormation ユーザーガイド*」の「[CloudFormation でのパブリック拡張機能の使用](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/registry-public.html)」を参照してください 

## アカウントおよびリージョンでサードパーティーリソースをアクティブ化する
<a name="use-cfn-public-registry-activate"></a>

AWS によって発行された拡張機能はアクティブ化を必要としません。すべてのアカウントおよびリージョンで常に利用できます。サードパーティー拡張機能は、AWS マネジメントコンソール経由、AWS 経由、または特別な AWS CloudFormation リソースをデプロイすることでアクティブ化できます。

 **AWS マネジメントコンソールでサードパーティー拡張機能をアクティブ化するか、利用可能なリソースを確認するには**   

![\[cfn 拡張機能をアクティブ化する\]](http://docs.aws.amazon.com/ja_jp/cdk/v2/guide/images/activate-cfn-extension.png)


1. 拡張機能を使用する AWS アカウントにサインインしたら、使用するリージョンに切り替えます。

1. **[サービス]** メニューを介して CloudFormation コンソールに移動します。

1. ナビゲーションバーで **[パブリック拡張機能]** を選択し、**[パブリッシャー]** の下にある **[サードパーティー]** のラジオボタンをアクティブ化します。利用可能なサードパーティーパブリック拡張機能のリストが表示されます。(** AWS ** を選択して AWS によって公開されたパブリック拡張機能のリストを表示することもできますが、アクティブ化する必要はありません)

1. リストを参照してアクティブ化する拡張機能を見つけます。または、検索したら拡張機能のカードの右上隅にあるラジオボタンをアクティブ化します。

1. リストの上部にある **[アクティブ化]** ボタンを選択し、選択した拡張機能をアクティブ化します。拡張機能の **[アクティブ化]** ページが表示されます。

1. **[アクティブ化]** ページで拡張機能のデフォルト名を上書きし、実行ロールおよびログ記録設定を指定できます。新しいバージョンがリリースされたときに拡張機能を自動的に更新するかどうかを選択することもできます。これらのオプションを任意に設定したら、ページの下部にある **[拡張機能のアクティブ化]** を選択します。

 **AWS CLI を使用してサードパーティー拡張機能をアクティブ化するには**   
+ `activate-type` コマンドを使用します。指示に従って使用するカスタムタイプの ARN を置き換えます。

  以下に例を示します。

  ```
  aws cloudformation activate-type --public-type-arn <public_extension_ARN> --auto-update-activated
  ```

 **CloudFormation または CDK を使用してサードパーティー拡張機能をアクティブ化する方法**   

1. ` AWS::CloudFormation::TypeActivation` タイプのリソースをデプロイし、次のプロパティを指定します。

   1.  `TypeName` - `AWSQS::EKS::Cluster` など、タイプの名前。

   1.  `MajorVersion` - 使用する拡張機能のメジャーバージョン番号。最新バージョンが必要な場合は省略します。

   1.  `AutoUpdate` - パブリッシャーによって新しいマイナーバージョンがリリースされたときにこの拡張機能を自動的に更新するかどうか。(メジャーバージョンの更新プログラムでは、`MajorVersion` プロパティを明示的に変更する必要があります)

   1.  `ExecutionRoleArn` - この拡張機能を実行する IAM ロールの ARN。

   1.  `LoggingConfig` - 拡張機能のログ記録設定。

   [https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.CfnResource.html](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.CfnResource.html) コンストラクトを使用して CDK によって `TypeActivation` リソースをデプロイできます。次のセクションで実際の拡張機能について示されます。

## AWS CloudFormation パブリックレジストリから CDK アプリにリソースを追加する
<a name="use-cfn-public-registry-add"></a>

[https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.CfnResource.html](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.CfnResource.html) コンストラクトを使用し、AWS CloudFormation パブリックレジストリからアプリケーションにリソースを含めます。このコンストラクトは CDK の `aws-cdk-lib` モジュールにあります。

例えば、AWS CDK アプリケーションで使用する `MY::S5::UltimateBucket` という名前のパブリックリソースがあるとします。このリソースは、バケット名という 1 つのプロパティを使用します。対応する `CfnResource` インスタンス化は次のようになります。

**Example**  

```
const ubucket = new CfnResource(this, 'MyUltimateBucket', {
    type: 'MY::S5::UltimateBucket::MODULE',
    properties: {
           BucketName: 'UltimateBucket'
    }
});
```

```
const ubucket = new CfnResource(this, 'MyUltimateBucket', {
    type: 'MY::S5::UltimateBucket::MODULE',
    properties: {
           BucketName: 'UltimateBucket'
    }
});
```

```
ubucket = CfnResource(self, "MyUltimateBucket",
            type="MY::S5::UltimateBucket::MODULE",
            properties=dict(
                BucketName="UltimateBucket"))
```

```
CfnResource.Builder.create(this, "MyUltimateBucket")
	.type("MY::S5::UltimateBucket::MODULE")
	.properties(java.util.Map.of(    // Map.of requires Java 9+
	    "BucketName", "UltimateBucket"))
	.build();
```

```
new CfnResource(this, "MyUltimateBucket", new CfnResourceProps
{
    Type = "MY::S5::UltimateBucket::MODULE",
    Properties = new Dictionary<string, object>
    {
        ["BucketName"] = "UltimateBucket"
    }
});
```