

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

# Service Catalog で製品を定義するプログラミングオプション
<a name="options"></a>

Service Catalog を使用して AWS インフラストラクチャをプロビジョニングするための 2 つのプログラミングオプションは、CloudFormation テンプレートまたは です AWS CDK。現在、Service Catalog 製品を定義する宣言型またはノーコードのメカニズムはありません。

## CloudFormation のスクリプト
<a name="cfn"></a>

CloudFormation は、インフラストラクチャをプロビジョニングするための実証済みの IaC ネイティブスクリプト言語です AWS 。または Visual Studio Code (またはシンプルなテキストエディタ) や AWS Command Line Interface () などの AWS マネジメントコンソール 開発ツールを使用して、CloudFormation スクリプトを開発できますAWS CLI。

詳細については、[CloudFormation ドキュメント](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/GettingStarted.html)を参照してください。CloudFormation テンプレートを使用して Service Catalog 製品を指定する方法の詳細については、CloudFormation ドキュメントの「[AWS::ServiceCatalog::CloudFormationProduct](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-cloudformationproduct.html)」リソースを参照してください。

## を使用したプログラムによるアプローチ AWS CDK
<a name="cdk"></a>

 AWS CDK は、さまざまなプログラミング言語を使用して AWS インフラストラクチャを定義および維持するための、オブジェクト指向の洗練された強力なプログラミングフレームワークを提供します。を使用して、オブジェクト指向のきめ細かなカスタマイズと AWS クラスフレームワークへの拡張 AWS CDK を開発できます。 AWS CDK は、より高度なインフラストラクチャのニーズ AWS のサービス に合わせてカスタマイズしたいユーザー、および必要なプログラミングスキルと経験を持つユーザーを対象としています。

を使用して Service Catalog ソリューションを実装するには AWS CDK、組み込みの Service Catalog クラスを使用して製品とポートフォリオを定義します。これらのクラスは、 AWS CDK [aws-cdk-lib.aws\_servicecatalog モジュール](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_servicecatalog-readme.html)によって提供されます。

を使用して AWS CDK 、さまざまな方法で製品を実装できます。CloudFormation で製品のプロビジョニングテンプレートを記述する必要がなくなり、再利用性を維持するために、 AWS CDK [ProductStack クラス](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_servicecatalog.ProductStack.html)を使用してプロビジョニングテンプレートを表すことをお勧めします。`ProductStack` インスタンスは、プログラムでリソースを追加する AWS CDK スタックです。例えば、S3 バケット、IAM ロール、Amazon CloudWatch ログを追加できます。を呼び出し`ProductStack`てインスタンスをプロビジョニングテンプレートとして定義された`servicecatalog.CloudFormationProduct`インスタンスに追加すると`servicecatalog.CloudFormationTemplate.fromProductStack (<ProductStack instance>)`、 AWS CDK は自動的に CloudFormation テンプレートを生成します。

以下は Amazon S3 製品の Java `ProductStack` 実装の例です。

```
import * as s3 from 'aws-cdk-lib/aws-s3';
import * as cdk from 'aws-cdk-lib';
 
class S3BucketProduct extends servicecatalog.ProductStack {
  constructor(scope: Construct, id: string) {
    super(scope, id);
 
    new s3.Bucket(this, 'BucketProduct');
  }
}
 
const product = new servicecatalog.CloudFormationProduct(this, 'Product', {
  productName: "My Product",
  owner: "Product Owner",
  productVersions: [
    {
      productVersionName: "v1",
      cloudFormationTemplate: servicecatalog.CloudFormationTemplate.fromProductStack(new S3BucketProduct(this, 'S3BucketProduct')),
    },
  ],
});
```

 AWS CDK は、組み込みの継続的インテグレーションおよび継続的デプロイ (CI/CD) パイプラインを提供します。これら組み込みのパイプラインとソフトウェア開発ライフサイクル (SDLC) プロセスをカスタマイズして、独自のプロセス標準と目的を満たすことができます。

カスタム AWS CDK クラスは、特殊な関数を提供するために他のクラスから継承でき、クラスは他のクラスのインスタンスから構成できます。共有 AWS CDK クラスフレームワークを使用して複数の Service Catalog 製品を実装する場合は、特に複数の開発チームにわたるバージョニングや互換性への影響を考慮してください。変更に下位互換性があること、またはある製品のクラス変更が別の製品を破損しないように、バージョニングスキームに従っていることを確認する必要があります。

詳細については、[AWS CDK のドキュメント](https://docs.aws.amazon.com/cdk/v2/guide/home.html)を参照してください。