簡體   English   中英

CDK 中的 ECS 角色無法訪問 RoleArn

[英]RoleArn not accessible for ECS Role in CDK

在以下代碼片段中,我在構建項目時遇到錯誤。 盡管我已經在用法上方定義了 ecs 服務,但為什么角色顯示為未定義?

TypeError: Cannot read property 'roleArn' of undefined

我可以看到 roleArn 是 Role 的可訪問字段。 我在這里做錯了什么?

    let ecsService: FargateStack;
    
    .... (lines of code)

    const service = target.serviceDefinition;
    const serviceName = generateResourceName(service.shortName, stageName, airportCode, account, cell);
    ecsService = new FargateStack(app, serviceName, {
      softwareType: SoftwareType.LONG_RUNNING_SERVICE,
      ...(other params)
      httpsListener: cluster.httpsListner,
    });
    ecsService.addDependency(cluster);
    servicesStacks.push(ecsService);

    if (!awsAccountsWithOpenSearchCreated.has(accountRegion) && ecsService.serviceName == ServiceName.CONFIG_STORE){
      const openSearchStackName = generateResourceName('opensearch', stageName, airportCode, account, cell);
      const openSearchStack = new OpenSearchStack(app, openSearchStackName, {
        env: deploymentEnvironment,
        ... (other params)
        role: ecsService.role.roleArn
      });
      regionalResources.push(openSearchStack);

    }

您的ecsService變量是FargateStack類型。 它可能擴展了沒有role屬性的cdk.Stack

您可能正在尋找ecs.[Fargate | Ec2 ]Service ecs.[Fargate | Ec2 ]Service任務定義 如果是這樣,請將 ECS 服務公開為FargateStack中的公共實例字段

// FargateStack.ts
export class FargateStack extends cdk.Stack {
  readonly service: ecs.FargateService;

  constructor(scope: Construct, id: string, props: MyFargateStackProps) {
    // ... code ...
    this.service = new ecs.FargateService(...)

該角色在服務的任務定義中可用:

const { service } = new FargateStack(...)

const role: iam.Role = service.taskDefinition.taskRole

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM