小编e-e*_*e-e的帖子

将图像推送到 ECR,得到“在...秒后重试”

我最近在 AWS ECR 中创建了一个新存储库,并尝试推送图像。我正在复制/粘贴通过存储库页面上的“查看推送命令”按钮提供的说明。我将其复制到此处以供参考:

  1. aws ecr get-login-password --region us-west-2 | docker login --username AWS --password-stdin 123456789.dkr.ecr.us-west-2.amazonaws.com

(“登录成功”)

  1. docker build -t myorg/myapp .

  2. docker tag myorg/myapp:latest 123456789.dkr.ecr.us-west-2.amazonaws.com/myorg/myapp:latest

  3. docker push 123456789.dkr.ecr.us-west-2.amazonaws.com/myorg/myapp:latest

然而,当我到达这docker push一步时,我看到:

> docker push 123456789.dkr.ecr.us-west-2.amazonaws.com/myorg/myapp:latest
The push refers to repository [123456789.dkr.ecr.us-west-2.amazonaws.com/myorg/myapp]

a53c8ed5f326: Retrying in 1 second 
78e16537476e: Retrying in 1 second 
b7e38d172e62: Retrying in 1 second 
f1ff72b2b1ca: Retrying in 1 second 
33b67aceeff0: Retrying in 1 second 
c3a550784113: Waiting 
83fc4b4db427: Waiting 
e8ade0d39f19: Waiting 
487d5f9ec63f: Waiting 
b24e42eb9639: Waiting 
9262398ff7bf: Waiting …
Run Code Online (Sandbox Code Playgroud)

docker amazon-ecr

72
推荐指数
5
解决办法
7万
查看次数

删除不必要的AWS资源,VPC + NAT网关

我最近通过 CDK 在 AWS 上设置了一个应用程序。该应用程序由一个 Dockerized Nodejs 应用程序组成,该应用程序连接到 RDS 实例,并且还具有 Redis 缓存层。应用程序部署几天后,即使流量很小,成本也比我预期的要高得多。查看成本浏览器后,看起来一半的成本来自 NAT 网关。

在我当前的设置中,我创建了两个 VPC。一个用于应用程序堆栈,另一个用于 CodePipeline。我需要为管道添加一个,因为如果没有它,我在 CodeBuildAction 步骤期间尝试拉取 Docker 映像时会遇到速率限制。

我对网络部分不太满意,但我觉得涉及额外的资源。管道VPC有3个NAT网关和3个EIP。这些最终只是坐在那里等待下一次部署,这似乎是一种巨大的浪费。似乎为 CDK 中附加的 VPC 的每个构造分配了一个新的网关 + EIP。我可以让它重复使用同一个吗?有没有其他方法可以完全添加 VPC 并且不受 Docker 限制速率?

我还发现非常令人惊讶(我可能只是天真),NAT 网关到目前为止与我当前的 Fargate 任务成本同样昂贵。有没有一种替代方案可以满足我的目的,但成本要低一些?

无论如何,这是我的两个堆栈:

// pipeline-stack.ts

import { SecretValue, Stack, StackProps } from "aws-cdk-lib";
import { Construct } from "constructs";
import { Artifact, IStage, Pipeline } from "aws-cdk-lib/aws-codepipeline";
import {
  CloudFormationCreateUpdateStackAction,
  CodeBuildAction,
  CodeBuildActionType,
  GitHubSourceAction,
} from "aws-cdk-lib/aws-codepipeline-actions";
import {
  BuildEnvironmentVariableType,
  BuildSpec,
  LinuxBuildImage,
  PipelineProject,
} from "aws-cdk-lib/aws-codebuild";
import …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services amazon-vpc aws-cdk aws-nat-gateway

2
推荐指数
1
解决办法
1427
查看次数

ECS 任务无法提取机密或注册表身份验证

我有一个 CDK 项目,它创建一个在 ECS 上部署应用程序的 CodePipeline。我之前一切都正常,但 VPC 使用 NAT 网关,这最终导致成本太高。所以现在我尝试在不需要 NAT 网关的情况下重新创建该项目。我快要完成了,但现在当 ECS 服务尝试启动任务时遇到了问题。所有任务都无法启动,并出现以下错误:

ResourceInitializationError: unable to pull secrets or registry auth: execution resource retrieval failed: unable to retrieve secret from asm: service call has been retried 5 time(s): failed to fetch secret
Run Code Online (Sandbox Code Playgroud)

此时,我已经忘记了我尝试过的不同事情,但我将在这里发布相关内容以及我的一些尝试。

ResourceInitializationError: unable to pull secrets or registry auth: execution resource retrieval failed: unable to retrieve secret from asm: service call has been retried 5 time(s): failed to fetch secret
Run Code Online (Sandbox Code Playgroud)

我在某处读到,它可能与 Fargate 版本 1.4.0 与 1.3.0 有关,但我不确定需要更改什么才能允许任务访问它们需要运行的内容。

amazon-web-services amazon-ecs amazon-vpc aws-cdk

1
推荐指数
1
解决办法
1206
查看次数