草庐IT

amazon-web-services - AWS ECS SDK.使用 SDK 为 ECS 集群注册新的容器实例 (EC2)

coder 2024-07-09 原文

我在使用 AWS SDK 时遇到过这个问题。目前我正在使用 golang 的 SDK,但也欢迎其他语言的解决方案!

我通过 SDK 创建了 ECS 集群

现在我需要为这个集群添加 EC2 容器。我的问题是我无法使用 Amazon ECS 代理通过配置指定集群名称:

#!/bin/bash
echo ECS_CLUSTER=your_cluster_name >> /etc/ecs/ecs.config

或类似的东西。 我只能使用 SDK

我找到了名为 RegisterContainerInstance 的方法.

但是它有注释:

This action is only used by the Amazon ECS agent, and it is not intended for use outside of the agent.

它看起来不像工作解决方案。

我需要了解如何(如果可能的话)仅使用 SDK 创建有效的 ECS 集群

更新: 我的主要目标是我需要从我的 Docker 镜像启动指定数量的服务器。 在调查此任务时,我发现我需要:

  • 创建ECS集群

  • 为其分配所需的 ec2 实例数。

  • 使用我的 Docker 镜像创建任务。

  • 手动或作为服务在集群上运行它。

所以我:

  1. 通过 CreateCluster 创建了新集群名为“test-cluster”的方法。

  2. 通过 RegisterTaskDefinition 创建了新任务

  3. 创建了具有 ecsInstanceRole 角色和 ecs-optimized AMI 类型的新 EC2 实例,这对我所在的地区来说是正确的。 那里是问题开始的地方。

实际结果:所有新的 ec2 实例都附加到“默认”集群(AWS 创建它并将实例附加到它)。 如果我使用的是 ECS 代理,我可以使用 ECS_CLUSTER 配置环境指定集群名称。但我正在开发仅使用 SDK 的工具(没有任何使用 ECS 代理的能力)。 使用 RegisterTaskDefinition 我无法指定集群,所以我的问题是如何将新的 EC2 实例准确分配给指定的集群?

当我试图通过 RunTask 开始我的任务时方法(希望 AWS 以某种方式为我创建实例或类似的东西)我收到一个错误:

InvalidParameterException: No Container Instances were found in your cluster.

最佳答案

我其实搞不懂你问的是哪个问题。您需要向集群添加容器,还是向集群添加实例?这些是非常不同的。

向集群添加实例

这不是通过 ECS API 完成的,而是通过使用正确的 ecsInstanceRole 创建 EC2 实例的 EC2 API 完成的。查看Launching an Amazon ECS Container Instance文档以获取更多信息。

将容器添加到集群

这是通过定义任务定义,然后手动或作为服务运行这些任务来完成的。查看Amazon ECS Task Definitions获取更多信息。

关于amazon-web-services - AWS ECS SDK.使用 SDK 为 ECS 集群注册新的容器实例 (EC2),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51773995/

有关amazon-web-services - AWS ECS SDK.使用 SDK 为 ECS 集群注册新的容器实例 (EC2)的更多相关文章

  1. ruby-on-rails - rails : save file from URL and save it to Amazon S3 - 2

    从给定URL下载文件并立即将其上传到AmazonS3的更直接的方法是什么(+将有关文件的一些信息保存到数据库中,例如名称、大小等)?现在,我既不使用Paperclip,也不使用Carrierwave。谢谢 最佳答案 简单明了:require'open-uri'require's3'amazon=S3::Service.new(access_key_id:'KEY',secret_access_key:'KEY')bucket=amazon.buckets.find('image_storage')url='http://www.ex

  2. ruby - 我可以使用 aws-sdk-ruby 在 AWS S3 上使用事务性文件删除/上传吗? - 2

    我发现ActiveRecord::Base.transaction在复杂方法中非常有效。我想知道是否可以在如下事务中从AWSS3上传/删除文件:S3Object.transactiondo#writeintofiles#raiseanexceptionend引发异常后,每个操作都应在S3上回滚。S3Object这可能吗?? 最佳答案 虽然S3API具有批量删除功能,但它不支持事务,因为每个删除操作都可以独立于其他操作成功/失败。该API不提供任何批量上传功能(通过PUT或POST),因此每个上传操作都是通过一个独立的API调用完成的

  3. ruby-on-rails - 如何将大于 5GB 的文件上传到 Amazon S3? - 2

    我目前正在使用带有Carrierwavegem的Rails3.2将文件上传到AmazonS3。现在我需要能够处理用户提交的大于5GB的文件,同时仍然使用Carrierwavegem。Carrierwave或Fog是否有任何其他gem或分支可以处理5GB以上的文件上传到S3?编辑:我不想重写一个完整的Rails上传解决方案,所以像这样的链接没有帮助:https://gist.github.com/908875. 最佳答案 我想出了如何做到这一点,并且现在可以正常工作了。在正确的config/environment文件中,添加以下内容以

  4. ruby-on-rails - 将 Amazon Simple Notification service SNS 与 ruby​​ 结合使用 - 2

    很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visitthehelpcenter.关闭9年前。我需要从基于ruby​​的应用程序使用AmazonSimpleNotificationService,但不知道从哪里开始。您对从哪里开始有什么建议吗?

  5. ruby - 如何配置 Ruby Mechanize 代理以通过 Charles Web 代理工作? - 2

    我正在使用Ruby/Mechanize编写一个“自动填写表格”应用程序。它几乎可以工作。我可以使用精彩CharlesWeb代理以查看服务器和我的Firefox浏览器之间的交换。现在我想使用Charles查看服务器和我的应用程序之间的交换。Charles在端口8888上代理。假设服务器位于https://my.host.com。.一件不起作用的事情是:@agent||=Mechanize.newdo|agent|agent.set_proxy("my.host.com",8888)end这会导致Net::HTTP::Persistent::Error:...lib/net/http/pe

  6. ruby-on-rails - 尝试设置 Amazon 的 S3 存储桶 : 403 Forbidden error & setting permissions - 2

    我正在关注Hartl的railstutorial.org并已到达11.4.4:Imageuploadinproduction.我做了什么:注册亚马逊网络服务在AmazonIdentityandAccessManagement中,我创建了一个用户。用户创建成功。在AmazonS3中,我创建了一个新存储桶。设置新存储桶的权限:权限:本教程指示“授予上一步创建的用户读写权限”。但是,在存储桶的“权限”下,未提及新用户名。我只能在每个人、经过身份验证的用户、日志传送、我和亚马逊似乎根据我的名字+数字创建的用户名之间进行选择。我已经通过选择经过身份验证的用户并选中了上传/删除和查看权限的框(而不

  7. python - 用于 Python 或 Ruby 的 Amazon Book API? - 2

    这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:AmazonAPIlibraryforPython?我正在寻找一个AmazonAPI,它可以让我:按书名或作者查找书籍显示书籍封面获取有关每本书的信息(价格、评级、评论数、格式、页数等)Python或Ruby库都可以(我只想要最容易使用的库)。有什么建议么?我知道在SO上还有其他一些关于此的帖子,但这些API似乎很快就过时了。[几个月前我尝试了几个建议的Ruby库,但无法让它们中的任何一个工作。]

  8. ruby - 使用 Ruby 开发工具包将文件上传到 Amazon S3 - 2

    我正在尝试上传文件。一个简单的hello.txt。我正在关注文档,但无法将其上传到我的存储桶。#STARTAWSCLIENTs3=Aws::S3::Resource.newbucket=s3.bucket(BUCKET_NAME)begins3.buckets[BUCKET_NAME].objects[KEY].write(:file=>FILE_NAME)puts"Uploadingfile#{FILE_NAME}tobucket#{BUCKET_NAME}."bucket.objects.eachdo|obj|puts"#{obj.key}=>#{obj.etag}"endresc

  9. ruby-on-rails - 如何解析位于 Amazon S3 存储桶中的 CSV 文件 - 2

    下面是我用来从应用程序中解析CSV的代码,但我想解析位于AmazonS3存储桶中的文件。当推送到Heroku时它也需要工作。namespace:csvimportdodesc"ImportCSVDatatoInventory."task:wiwt=>:environmentdorequire'csv'csv_file_path=Rails.root.join('public','wiwt.csv.txt')CSV.foreach(csv_file_path)do|row|p=Wiwt.create!({:user_id=>row[0],:date_worn=>row[1],:inven

  10. ruby-on-rails - rails:为#<StateMachine::Machine:0xba3014ec> 调用了 protected 方法 `around_validation' - 2

    我正在尝试实现state_machinegem,在我的rails项目中,我安装了gem,然后我将“state”列添加到我的account_entries模型中:defchangeadd_column:account_entries,:state,:stringend然后在我的account_entries模型中,我添加了状态机初始方法,如下所示:state_machine:state,:initial=>:submitteddoend然后在我看来我显示时间进入状态:account_entry.state但是当我尝试从我的应用程序创建一个account_entry时,我得到了这个错误:p

随机推荐