我使用 Fargate 创建了 2 个任务和一个 ECS 集群,该集群在 2 个不同的服务中使用这 2 个任务。所以简而言之,一个集群:2 个服务,每个服务都链接到它们自己的任务,这些任务链接到 ECR 存储库。根据 AWS ECS Fargate 任务存储概念,每个任务都有 10gb 的 docker 层存储和额外的 4gb 卷安装。所以我想监控容器消耗的文件系统存储。我在想是否有人可以指出我如何将另一个 docker sidecar 附加到一个任务,该任务将监视该任务创建的容器的存储消耗并将其发送到云监视?每个任务定义都没有任何挂载点。即使任务重新启动并创建新实例,这也应该适用,但即使重新启动,我也不想保留数据。
如果有人能指出我做错的地方,我将不胜感激。看下面的步骤
我在 route53 中有一个域名。
根据域名,我创建了一个存储桶名称(为了我的问题,让我们坚持使用存储桶和域名作为 abc.nl)
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::1234567:user/usrname"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::abc.nl/*"
}
]
}
Run Code Online (Sandbox Code Playgroud)
username
的AmazonS3FullAccess
IAM政策。index.html
在static website hosting
块下添加了。现在,根据手册,我应该能够单击链接并访问该页面。但出于某种原因,它向我抛出了 403 访问禁止错误。
根据我的理解,只需添加bucket policy
您就可以打开公共访问。但对我来说,我没有看到“公共”标签。所以,不知道怎么回事。(我的理解可能是错误的,因此这篇文章。)
如果您想知道哪个手册,我正在关注https://docs.aws.amazon.com/AmazonS3/latest/dev/website-hosting-custom-domain-walkthrough.html how to host static web site。
无论如何,有人指出我哪里做错了,我应该从存储桶的权限中选择哪些选项?我可能会错过一些台词。
PS:我已经多次创建和删除同一个桶,只是为了每次都重新开始。
我想在本地使用 moto 测试我的 sts 设置。
get_aws_temp_credentials.py
import boto3
from botocore.exceptions import ClientError
def assume_role(aws_arn=None, aws_session_name=None):
if aws_arn is not None and aws_session_name is not None:
try:
local_session_name = aws_session_name[:64]
client = boto3.client('sts', region_name=Constants.pubAwsRegion)
response = client.assume_role(RoleArn=aws_arn,
RoleSessionName=local_session_name,
DurationSeconds=900)
return response
except ClientError as error:
logger.info({"message": "get_aws_temp_credentails.py: Can not assume Role"})
return 25
if __name__ == '__main__':
assume_role()
Run Code Online (Sandbox Code Playgroud)
test_assume_role.py :
import os
import pytest
from moto import mock_sts
@pytest.fixture
def aws_credentials():
"""Mocked AWS Credentials for moto."""
os.environ['AWS_ACCESS_KEY_ID'] = 'testing'
os.environ['AWS_SECRET_ACCESS_KEY'] = …
Run Code Online (Sandbox Code Playgroud) terraform plan -var-file=xx
给我
无法实例化提供程序“aws”以获取架构:与插件不兼容的 API 版本。插件版本:4,客户端版本:[5]
terraform init
没有任何问题。
Initializing the backend...
Initializing provider plugins...
Terraform has been successfully initialized!
You may now begin working with Terraform. Try running "terraform plan" to see
any changes that are required for your infrastructure. All Terraform commands
should now work.
If you ever set or change modules or backend configuration for Terraform,
rerun this command to reinitialize your working directory. If you forget, other
commands will detect it and remind you to …
Run Code Online (Sandbox Code Playgroud) 我有一组有趣的要求,我正在尝试使用 Python 子进程模块和 docker-compose 来执行这些要求。整个设置可以在一个 docker-compose 中完成,但由于要求,这就是我想要设置的:
这是我的 docker-compose.py 的样子:
import subprocess
from subprocess import PIPE
import os
from datetime import datetime
class MyLog:
def my_log(self, message):
date_now = datetime.today().strftime('%d-%m-%Y %H:%M:%S')
print("{0} || {1}".format(date_now, message))
class DockercomposeRun:
log = MyLog()
def __init__(self):
dir_name, _ = os.path.split(os.path.abspath(__file__))
self.dirname = dir_name
def run_docker_compose(self, filename):
command_name = ["docker-compose", "-f", self.dirname + filename, "up"]
popen = subprocess.Popen(command_name, stdin=PIPE, stdout=PIPE, stderr=PIPE, universal_newlines=True)
return popen …
Run Code Online (Sandbox Code Playgroud) 我在 Artifactory 中有一个 docker 镜像。如何查看“基础镜像版本是”?
例如,我的 dockerimage 在基于 docker 文件创建的神器中,如下所示
FROM test-image:v1.0.0
...
Run Code Online (Sandbox Code Playgroud)
现在构建完成后,我如何才能找到该图像是构建于v1.0.0
我尝试docker inspect <imagename>
这样做并没有帮助我找到test-image
. 我还能找到这个版本吗?
我有 2 个存储库,source
对于target
源代码,发布管道中有 2 个阶段。一个是构建调用的工件Dev
,另一个是trigger
=> 使用 api 调用触发存储库的构建管道target
。两个存储库都在同一个项目中。
可以target repo
手动运行,无需连续 CI source-repo
。现在我的问题是有没有可能弄清楚target-repo
它是如何启动manually
的CI
?
我有一个 Fargate 服务,其中一个任务运行容器。因此,我的容器是一个定制的管道,它基于 SQS 计数运行。因此,如果所有记录都已处理,那么我会停止容器中的管道。那么,我想知道的是,我可以将服务的所需计数设置为 0,而不是停止管道吗?(该服务是该容器任务的父级)
我有以下结构:
\n.github\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 workflows\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 main.yml\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 send_alerts.yml\n
Run Code Online (Sandbox Code Playgroud)\n现在主要是,我正在使用
\njobs:\n main:\n steps:\n - name: Git Checkout\n uses: actions/checkout@v3\n - name: some job\n run: |\n ......\n send_alerts:\n runs-on: ubuntu-latest\n steps:\n - uses: actions/checkout@v3\n - uses: ./.github/workflows/send_alerts.yml@feature/workflow1\n with:\n provision_status: "Success"\n \n
Run Code Online (Sandbox Code Playgroud)\n在我的send_alerts.yml
name: Creating and Sending Alerts/Status\non:\n workflow_call:\n \n provision_status:\n required: true\n type: string\n\njobs:\n create_send_alerts:\n runs-on: ubuntu-latest\n steps:\n - name: Git Checkout\n uses: actions/checkout@v3\n - name: Some other jobs\n run: |\n .....\n
Run Code Online (Sandbox Code Playgroud)\n所以这让我犯了错误:
\nCan't find …
Run Code Online (Sandbox Code Playgroud) 我有requirements.txt 文件,我在其中给出了自定义包名称和版本,如下所示,
custom-package >= 1.0.1
Run Code Online (Sandbox Code Playgroud)
现在在我的仓库中,我有如下版本
custom-package-1.0.1.tar.gz
custom-package-1.0.4.tar.gz
custom-package-5.0.0.tar.gz
Run Code Online (Sandbox Code Playgroud)
现在,如果我运行 pip installrequirements.txt ,那么它会选择 5.0.0。这是可以理解的。但我如何确定它应该只选择以 1 开头的版本,而不是以 5 开头的版本。
我能够使用 localstack 在本地创建和测试 AWS。所以,我想知道是否有任何用例可以参考如何在 ci/cd 中添加 localstack 并运行您的测试用例?任何显示样本的指针将不胜感激。
amazon-ecs ×2
aws-fargate ×2
docker ×2
python ×2
amazon-s3 ×1
api ×1
azure ×1
azure-devops ×1
github ×1
localstack ×1
moto ×1
python-3.x ×1
storage ×1
web-hosting ×1