AWSのCDKのv2では、aws_ecs_patterns
というモノが、aws-cdk-lib
に定義されています。
このaws_ecs_patterns
を利用すると、以下のような感じでecsでよく利用される構成を簡単に作ることができます。
import {aws_ecs_patterns as ecsp} from 'aws-cdk-lib';
export class CdkStack extends Stack {
constructor(scope: Construct, id: string, props?: StackProps) {
super(scope, id, props);
const ecsPatternsProps = ...
new ecsp.ApplicationLoadBalancedFargateService(this, 'AppServer', ecsPatternsProps);
}
}
ApplicationLoadBalancedFargateService()でタスクに対するIAMロールを指定する方法を確認しました。
確認結果
ApplicationLoadBalancedFargateServiceのコンストラクタ
ApplicationLoadBalancedFargateServiceのコンストラクタは、第三引数でpropsを渡すことができる。このpropsはApplicationLoadBalancedFargateServiceProps
型をしている。
export declare class ApplicationLoadBalancedFargateService extends ApplicationLoadBalancedServiceBase {
constructor(scope: Construct, id: string, props?: ApplicationLoadBalancedFargateServiceProps);
...
ApplicationLoadBalancedFargateServiceのコンストラクタ引数
ApplicationLoadBalancedFargateServiceProps
このApplicationLoadBalancedFargateServiceProps
には継承元としてApplicationLoadBalancedServiceBaseProps
が指定されている
export interface ApplicationLoadBalancedFargateServiceProps extends ApplicationLoadBalancedServiceBaseProps {
...
ApplicationLoadBalancedFargateServicePropsの継承元
ApplicationLoadBalancedServiceBaseProps
にはtaskImageOptions
のフィールドがある
このフィールドは、ApplicationLoadBalancedTaskImageOptions
の型を持つ。
export interface ApplicationLoadBalancedServiceBaseProps {
/**
* The properties required to create a new task definition. TaskDefinition or TaskImageOptions must be specified, but not both.
*
* @default none
*/
readonly taskImageOptions?: ApplicationLoadBalancedTaskImageOptions;
...
taskImageOptionsの定義
ApplicationLoadBalancedTaskImageOptions
は、executionRole
とtaskRole
のロール情報を持つ
export interface ApplicationLoadBalancedTaskImageOptions {
/**
* The name of the task execution IAM role that grants the Amazon ECS container agent permission to call AWS APIs on your behalf.
*
* @default - No value
*/
readonly executionRole?: IRole;
/**
* The name of the task IAM role that grants containers in the task permission to call AWS APIs on your behalf.
*
* @default - A task role is automatically created for you.
*/
readonly taskRole?: IRole;
...
こちらもおススメ