
AWS CDK で IAM OIDC ID プロバイダーを設定するときに OpenIdConnectProvider を使うと内部的に AWS Lambda 関数(カスタムリソース)もデプロイされる仕組みになっている💡とは言えデプロイのために AWS Lambda 関数が増えるのは避けたいな〜(ちょっと嫌だな〜)という気持ちもあったりする.
👾 oidc.ts (OpenIdConnectProvider)
サンプルとして GitHub Actions で使う IAM OIDC ID プロバイダーを設定する場合は以下のようなコードになる.
import { Stack, StackProps, aws_iam } from 'aws-cdk-lib' import { Construct } from 'constructs' export class OidcStack extends Stack { constructor(scope: Construct, id: string, props?: StackProps) { super(scope, id, props) new aws_iam.OpenIdConnectProvider(this, 'GitHubActions', { url: 'https://token.actions.githubusercontent.com', clientIds: ['sts.amazonaws.com'], }) } }
OidcStack-CustomAWSCDKOpenIdConnectProviderCustomR-xxxxx という AWS Lambda 関数がデプロイされていた.

OidcProviderNative とは
AWS CDK v2.200.0 で新しく OidcProviderNative が追加された❗️
これは AWS CloudFormation の AWS::IAM::OIDCProvider にマッピングされるため AWS Lambda 関数(カスタムリソース)はデプロイされず,シンプルになる👏
👾 oidc.ts (OidcProviderNative)
コードは OpenIdConnectProvider とほとんど同じで OK👌
import { Stack, StackProps, aws_iam } from 'aws-cdk-lib' import { Construct } from 'constructs' export class OidcStack extends Stack { constructor(scope: Construct, id: string, props?: StackProps) { super(scope, id, props) new aws_iam.OidcProviderNative(this, 'GitHubActions', { url: 'https://token.actions.githubusercontent.com', clientIds: ['sts.amazonaws.com'], }) } }
デプロイ確認
期待通りにデプロイできた👌

まとめ
今後新しく IAM OIDC ID プロバイダーを設定するときは OidcProviderNative を使おう〜💪