in lib/identityprovider.ts [23:51]
constructor(scope: Construct, id: string, props: OIDCIdentityProviderProps) {
super(scope, id);
if (!OIDCIdentityProvider.fn) {
OIDCIdentityProvider.fn = new Function(scope, 'OIDCIdentityProviderCustomResource', {
code: Code.fromAsset(path.resolve(__dirname, '..', 'lambda-packages', 'identity_provider_handler')),
handler: 'index.handler',
runtime: Runtime.NODEJS_12_X,
timeout: Duration.minutes(15),
});
OIDCIdentityProvider.fn.addToRolePolicy(new PolicyStatement({
actions: [
'eks:DescribeCluster',
'iam:CreateOpenIDConnectProvider',
'iam:DeleteOpenIDConnectProvider'
],
resources: ['*']
}));
}
const provider = new CustomResource(this, 'Resource', {
provider: CustomResourceProvider.fromLambda(OIDCIdentityProvider.fn),
resourceType: 'Custom::EksOidcIdentityProvider',
properties: {
ClusterName: props.clusterName,
}
});
this.providerArn = Token.asString(provider.getAtt('Arn'));
}