Skip to content
Latchkey

AWSとは?ほとんどのPipelineがデプロイするクラウド

AWSはAmazon Web Servicesです: 自前のデータセンターを運用する代わりに、compute、storage、データベース、そして数百のマネージドサービスをレンタルする従量課金のクラウドです。

Amazon Web Servicesは最大のパブリッククラウドプロバイダーであり、生の仮想マシンから、完全マネージドのデータベース、キュー、機械学習APIまで、200を超えるサービスを提供します。チームは、オンデマンドでスケールし消費した分だけ支払えるようAWSを使います。ほとんどのソフトウェアチームにとって、AWSはCI/CD pipelineが最終的にコードを届ける場所でもあります。

AWSが実際に提供するもの

AWSはその提供物を広いカテゴリにグループ化します: compute (EC2、Lambda、ECS、EKS)、storage (S3、EBS)、networking (VPC、CloudFront、Route 53)、データベース (RDS、DynamoDB)、そして高レベルなマネージドサービスのロングテール。リソースはコンソール、AWS CLI、またはTerraformやCloudFormationのようなinfrastructure-as-codeツールでプロビジョニングします。

regionとavailability zone

AWSは数十の地理的regionで稼働し、それぞれが分離されたavailability zoneに分かれています。regionの選択はレイテンシ、データレジデンシー、価格に影響します。リソースは一般に1つのregionに存在するため、deploymentは設定で特定のregionをターゲットにします。

支払い方法

  • 秒単位または時間単位で課金されるon-demand価格。
  • 安定して予測可能なworkload向けのReservedおよびsavings plans。
  • 中断可能な作業向けの割引されたspotキャパシティ。
  • 安価に始めるための多くのサービスのfree-tier枠。

アイデンティティとアクセス

すべてのAWSリソースへのアクセスは、identity and access managementサービスであるIAMによってゲートされます。IAMのusers、roles、policiesが、誰または何がどのAPIを呼べるかを決めます。CI pipelineは、何かをデプロイできるようになる前にIAM principalとして認証します。

CI/CDでの役割

典型的なpipelineでは、CIがコードをbuildしてテストし、それからdeploy jobがアーティファクトをAWSにpushします: 静的サイトをS3とCloudFrontにアップロードする、コンテナイメージをECRにpushしてECS serviceを更新する、または関数をLambdaにデプロイする。GitHub Actionsから認証する最もクリーンな方法はOIDC roleで、長期のAWSキーをsecretsとして保存せずにworkflowがIAM roleをassumeできるようにします。

Latchkeyの位置づけ

LatchkeyはマネージドのGitHub Actions runnerをAWSで実行するので、あなたのCI computeとデプロイ先が同じネットワーク近隣を共有します。これにより、runnerからのregistry pull、S3アップロード、ECS rolloutが高速で低レイテンシに保たれます。

重要なポイント

  • AWSは、compute、storage、networkingにわたる200以上のサービスを持つ従量課金のクラウドです。
  • すべてのリソースはregionに存在し、IAMのパーミッションでゲートされます。
  • pipelineは、理想的にはOIDC経由でIAM principalとして認証してAWSにデプロイします。

関連ガイド