aws fargate_我如何在AWS Fargate上部署#100DaysOfCloud Twitter Bot

news/2024/7/5 7:58:02

aws fargate

After passing my last certification, I asked myself how much time I spent studying cloud computing.

通过上一份认证后,我问自己自己花了多少时间研究云计算。

More than 100 days!

超过100天!

It also made me realize two things:

这也让我意识到两件事:

  1. There was no #100DaysOfCloud challenge

    没有#100DaysOfCloud挑战
  2. We have now enough content to create this challenge

    现在,我们有足够的内容来应对这一挑战

So I immediately contacted Alex Kallaway, the creator of #100DaysOfCode, to ask him if it was possible to create #100DaysOfCloud based on his challenge.

因此,我立即联系#100DaysOfCode的创建者Alex Kallaway,询问他是否有可能根据他的挑战创建#100DaysOfCloud。

And a few days later, the #100DaysOfCloud challenge was official:

几天后,#100DaysOfCloud挑战赛正式开始:

But something was missing.

但是缺少了一些东西。

If you already used the #100DaysOfCode hashtag, you know that your tweets are going to be retweeted at least three times by Twitter bots.

如果您已经使用#100DaysOfCode主题标签,则知道Twitter机器人将至少转发3次您的推文。

Because there were no bots for the new #100DaysOfCloud challenge, I decided to fix that problem.

因为没有新的#100DaysOfCloud挑战机器人,所以我决定解决此问题。

In this post, we're gonna see how I deployed my Twitter bot and why I choose to deploy it on AWS Fargate.

在本文中,我们将看到我如何部署Twitter机器人以及为什么选择在AWS Fargate上部署它。

Let's start!

开始吧!

先决条件 (Prerequisites)

If you want to follow along and run the commands below, be sure to:

如果要继续并运行以下命令,请确保:

  • Have an AWS account with access key and secret key

    拥有一个具有访问密钥和秘密密钥的AWS账户

  • Have Twitter API Authentication Credentials

    拥有Twitter API身份验证凭据

  • Install Docker on your machine

    在您的机器上安装Docker

  • Clone the repository from https://github.com/johanrin/100-days-of-cloud-bot

    从https://github.com/johanrin/100-days-of-cloud-bot克隆存储库

为什么选择AWS Fargate? (Why AWS Fargate?)

If you check my code, you’ll see that:

如果检查我的代码,您会看到:

  • The code is written in Python and use tweepy package

    该代码是用Python编写的,并使用tweepy包
  • The bot is always running (using a while loop)

    机器人始终处于运行状态(使用while循环)

  • There is a Dockerfile to build my image

    有一个Dockerfile构建我的映像

I will not explain all the code because that's beyond the scope of this post. But I did mention all the sources I used in the GitHub repository.

我不会解释所有代码,因为这超出了本文的范围。 但是我确实提到了我在GitHub存储库中使用的所有资源。

My idea was to deploy the Docker image in a container in the cloud with the following constraints:

我的想法是将Docker映像部署在云中的容器中,并具有以下限制:

  1. I don't want to spend much money

    我不想花很多钱
  2. I don't want to manage and operate servers

    我不想管理和操作服务器

Because I have credits on AWS, the first constraint was easy — go with AWS.

因为我对AWS有信誉,所以第一个约束很容易-选择AWS。

As for constraint number 2, I knew from the AWS Certified Developer - Associate course, that we could deploy serverless containers with AWS Fargate.

关于约束2,我从AWS Certified Developer-Associate课程知道,我们可以使用AWS Fargate部署无服务器容器。

Depending on your region, the pricing for AWS services can vary. It's often just a matter of a few cents, but I planned to run my bot for at least one year. So, every cent mattered.

根据您所在的地区,AWS服务的价格可能有所不同。 通常只需几美分,但我计划将我的机器人运行至少一年。 因此,每一分都很重要。

To see AWS Fargate pricing and minimize your cost, you can check the AWS documentation. I found that the cheapest region close to me was Ireland, so I decided to deploy my bot to AWS Fargate there.

要查看AWS Fargate定价并最大程度地降低成本,您可以查看AWS文档 。 我发现距离我最近的最便宜的地区是爱尔兰,因此我决定将我的机器人部署到那里的AWS Fargate。

我如何部署我的机器人? (How did I deploy my bot?)

Now that I've explained why I used AWS Fargate, let's see how I deployed my bot.

现在,我已经解释了为什么使用AWS Fargate的原因,让我们看看如何部署我的机器人。

There are two big steps to deploy a Docker image on AWS Fargate:

在AWS Fargate上部署Docker映像有两个重要步骤:

  1. Push the Docker image to Amazon Elastic Container Registry (ECR)

    将Docker映像推送到Amazon Elastic Container Registry(ECR)
  2. Deploy the Docker image on Fargate

    在Fargate上部署Docker映像

Let's explain each step in detail.

让我们详细解释每个步骤。

将Docker映像推送到Amazon Elastic Container Registry(ECR) (Push the Docker image to Amazon Elastic Container Registry (ECR))

  • In the root directory, build your image from the Dockerfile.

    在根目录中,从Dockerfile构建映像。

docker build . -t 100-days-of-cloud-bot
  • Authenticate your Docker to Amazon ECR.

    对您的Docker进行Amazon ECR身份验证。
aws ecr get-login-password --region region | docker login --username AWS --password-stdin aws_account_id.dkr.ecr.region.amazonaws.com
  • Tag your image with the Amazon ECR repository.

    用Amazon ECR存储库标记图像。
docker tag 100-days-of-cloud-bot aws_account_id.dkr.ecr.region.amazonaws.com/100-days-of-cloud-bot
  • Push your image to Amazon ECR.

    将您的图像推送到Amazon ECR。
docker push aws_account_id.dkr.ecr.region.amazonaws.com/100-days-of-cloud-bot

在Amazon Fargate上部署Docker映像 (Deploy the Docker image on Amazon Fargate)

  • Open the Amazon ECS console first run wizard.

    打开Amazon ECS控制台首次运行向导 。

  • Click Configure in the custom container, complete with the following settings, and then select Update.

    单击自定义容器中的“ 配置 ”,完成以下设置,然后选择“ 更新”

PropertyValue
Container namecontainer-100-days-of-cloud-bot
Imageaws_account_id.dkr.ecr.region.amazonaws.com/100-days-of-cloud-bot
Memory Limits (MiB)Soft Soft limit | 512
Port mappingsContainer port: 80Protocol: tcp
CPU units256
Environment variables
(Twitter API Authentication Credentials)
CONSUMER_KEY | Value | consumer_key
CONSUMER_SECRET | Value | consumer_secret
ACCESS_TOKEN | Value | access_token
ACCESS_TOKEN_SECRET | Value | access_token_secret
属性
容器名称 容器-100天的云机器人
图片 aws_account_id.dkr.ecr.region.amazonaws.com/100天云漫游器
内存限制(MiB) 软限制 512
端口映射 货柜码头 :80
通讯协议 :tcp
CPU单元 256
环境变量
(Twitter API身份验证凭据)
CONSUMER_KEY | 价值| Consumer_key
CONSUMER_SECRET | 价值| Consumer_secret
ACCESS_TOKEN | 价值| access_token
ACCESS_TOKEN_SECRET | 价值| access_token_secret
  • Click Edit in the Task definition section, complete with the following settings, and then select Save.

    单击“ 任务定义”部分中的“ 编辑 ”,完成以下设置,然后选择“ 保存”

PropertyValue
Task definition nametask-definition-100-days-of-cloud-bot
Task memory0.5GB (512)
Task CPU0.25 vCPU (256)
属性
任务定义名称 任务定义100天云机器人
任务记忆 0.5GB(512)
任务CPU 0.25 vCPU(256)
  • Click Next.

    单击下一步

  • Click Edit in the Define your service section, complete with the following settings, and then select Save.

    点击定义您的服务部分中的编辑 ,完成以下设置,然后选择保存

PropertyValue
Service nameservice-100-days-of-cloud-bot
Number of desired tasks1
Load balancer typeNone
属性
服务名称 服务100天的云机器人
所需任务数 1个
负载均衡器类型 没有

We don't need a load balancer here because of the Twitter API rate limit. Even if we scale-out our containers, Twitter's API will send us a 420 error message because the bot is being rate limited for making too many requests.

由于Twitter API速率限制,我们在这里不需要负载均衡器。 即使我们向外扩展容器,Twitter的API也会向我们发送420错误消息,因为该漫游器由于发出过多请求而受到速率限制。

  • Click Next.

    单击下一步

  • Edit your Cluster name with cluster-100-days-of-cloud-bot.

    使用cluster-100-days-cloud-bot编辑您的集群名称

  • Click Next.

    单击下一步

  • Review your configuration and click Create.

    查看您的配置,然后单击创建

That's it, the container is deployed on AWS Fargate!

就是这样,容器已部署在AWS Fargate上!

结论 (Conclusion)

You deployed your Twitter bot on AWS Fargate with only four steps.  🎉🎉🎉

您只需四个步骤就可以将Twitter机器人部署到AWS Fargate上。 🎉🎉🎉

AWS Fargate is easy to use, allowing us to deploy containers without managing and operating servers.

AWS Fargate易于使用,使我们无需管理和操作服务器即可部署容器。

This use case was simple, but we can do much more like adding a load balancer or defining more tasks. I recommend you to check the documentation for more details.

这个用例很简单,但是我们可以做更多的事情,例如添加负载平衡器或定义更多任务。 我建议您检查文档以了解更多详细信息。

Because this post was about the #100DaysOfCloud challenge, I should mention that we have Discord server, so feel free to join the community and the challenge! We have amazing people from all around the world ready to help you to get started with the Cloud.

因为这篇文章是关于#100DaysOfCloud挑战的,所以我应该提到我们有Discord服务器 ,所以随时加入社区和挑战吧! 我们有来自世界各地的出色人才,随时可以帮助您开始使用Cloud。

That’s it for me, hope you learned something!

对我来说就是这样,希望您能学到一些东西!

翻译自: https://www.freecodecamp.org/news/how-i-deployed-my-100daysofcloud-twitter-bot-on-aws-fargate/

aws fargate


http://lihuaxi.xjx100.cn/news/237181.html

相关文章

玉蟾宫

题目链接:https://www.luogu.org/problemnew/show/P4147 题目背景 有一天,小猫rainbow和freda来到了湘西张家界的天门山玉蟾宫,玉蟾宫宫主蓝兔盛情地款待了它们,并赐予它们一片土地。 题目描述 这片土地被分成N*M个格子&#xff0…

EOS技术知识介绍

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 EOS 简介 EOS:EOS可以理解为Enterprise Operation System,即为商用分布式应用设计的一款区块链操作系统。EOS是EOS软件引入…

自学成才翁_作为一名自学成才的开发者从“我的旅程”中吸取的教训

自学成才翁The path of the self-taught developer is tough and filled with uncertainty. There is no straight line from newbie to career programmer. Because of this, I believe all self-taught developers have a unique story to tell.自学成才的开发者之路艰难而充…

虚拟机配置参数

标准参数:保证所有JVM的实现都可以支持-client设置Hotspot client jvm,64位jdk会忽略该参数并设置-server-Dpropertyvalue用于设置系统属性,如果value中有空格,则需要设置-Dproperty"value value"-server选择Hotspot Se…

网站重构?

网站重构:在不改变外部行为的前提下,简化结构、添加可读性,而在网站前端保持一致的行为。也就是说是在不改变 UI 的情况下,对网站进行优化,在扩展的同时保持一致的 UI。对于传统的网站来说重构通常是:1. 表…

分布式系统的时间顺序

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 分布式系统的时间顺序 区块链被认为是分布式的系统,分布式系统中由于多节点,通讯、物理位置等的问题,各节点间时…

helm部署仓库中没有的包_Kubernetes的Helm软件包管理器简介

helm部署仓库中没有的包Before we dive into the Helm package manager, Im going to explain some key concepts to deploying any application anywhere. Ill also give you a brief introduction to Kubernetes terminology.在深入研究Helm软件包管理器之前 ,我将…

Bootstrap4 更新笔记

在bootstrap4里&#xff0c; 1. 旧版本bootstrap well变成了什么&#xff1f; well原本是‘’淡灰墙‘’样式。 Bootstrap 4 Beta card-block is now card-body, and bg-faded is now bg-light: <div class"card card-body bg-light"> Well </div>ref&am…