0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

aws-events-targetsから紐付けたECSタスクにはパブリックIPが割り当てられない を解決できた

Last updated at Posted at 2021-06-21

これ↓を嘆いていたら次の日には通りすがりの方が解決してくださった


cf. https://github.com/aws/aws-cdk/issues/9233

※ お金があればそもそも NATゲートウェイ使おう PrivateLink使おうで解決すると思います

FargateServicePropsにはある assignPublicIp?に相当するプロパティが EcsTaskPropsにはない。

じゃあデフォルト値=enableでパブリックIPを自動割り当てするのかというと、なんとデフォルト値はdisabledなので割り当てられない。

パブリックIPがないのでECSタスクはECRからimageをpullすることもできず堕ちる :innocent:

SubnetPropsmapPublicIpOnLaunch?に一縷の望みを託して独自にパブリックサブネットを作って配下に置いてみたがダメだった。無駄無駄ァ!

たぶんダメだろうけどScheduledFargateTaskPropsという搦手があるいはと思うこともあったが試す気力はなかった


どう解決したのか

  • EcsTaskProps.SubnetSelection.SubnetType = PUBLICを指定した
  • ECSタスク設定では、VPCサブネットのことを深く考えないことにした
    • 当時は subnetsで細かく指定しようとしていた
    • subnetTypeと競合した :innocent: のでやむなく subnetsは諦めた
    • つまり SubnetType = PUBLICだけの指定になった≒パブリックであることしか指定しないのでVPC内のパブリックサブネットが複数あったときどうなるのかわからないがそもそもVPCとサブネットの関係とはそんなものなのかもしれないので考えるのをやめた
こんな感じの指定をする
    const nanikaNoTask = new eventstargets.EcsTask({
      cluster: nanikaNoCluster,
      taskDefinition: nanikaNoTaskDefinition,
      taskCount: 1,
      securityGroup: nanikaNoSecurityGroup,
      subnetSelection: {
        subnetType: ec2.SubnetType.PUBLIC, // <- これ
        availabilityZones: [nanika.no.availabilityZones.a],
        // subnets: [nanikaNoPublicSubnet1], <- これがsubnetTypeと同時指定できない
      },
      platformVersion: ecs.FargatePlatformVersion.VERSION1_4,
    });
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?