【図解】AWSサービスとAPI キホンのキ

# AWSサービスのAPI、意識していますか？

唐突ですが、みなさんがAWSを触るとき、AWSサービスのAPIを意識していますか？

本記事では、AWSサービスとそのAPIについて、なるべく初心者にもわかりやすいよう**図で表現しながら解説**していこうと思います。


### 対象読者

* AWS初心者の方
* AWSのしくみを改めて確認したい方


### なぜこの記事を書いたのか？

AWSを理解する上でAWSサービスやそのAPIについて理解することは重要だと考えています。
しかし、初心者向けの書籍やブログでAWSサービスのAPIについて言及しているモノは少ないような気がしたので、書いてみようと思いました。
（私が知る限りでは少ないと感じたのですが、すでにそのようなモノがあったら教えていただけますと幸いです。）


### スライドで図解

文章で説明するよりも図を使って説明したほうが理解しやすいと思うので、スライドを作成しました。
本記事は、スライドに解説を加えていく形の構成となります。

なお、作成したスライドはSpeaker Deckにアップロードしてありますので、スライドの全容を確認したい場合はこちらをご参照ください。

<script defer class="speakerdeck-embed" data-id="e2704df10b44481fa6a576bc97f0c869" data-ratio="1.7777777777777777" src="//speakerdeck.com/assets/embed.js"></script>

https://speakerdeck.com/ozzy3/aws-service-and-api-fundamentals-20240226


# 結論

忙しい方やせっかちな方向けに結論から述べます。

![P.10 まとめ](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2443303/e4b265e4-484f-3462-1323-e68524baa388.png)


# 詳細解説

ここからは詳しく解説していきます。


## AWSサービス

![P.3 AWSサービス](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2443303/1585e88f-ae8b-7ebb-0133-2d4946aa9e69.png)

AWSは様々なサービスの集合体です。
**Amazon VPC** や **Amazon EC2**、**Amazon S3** などが **AWSサービス** に該当するモノです。

なお、本記事執筆時点（2024年2月）で200以上のサービスがあります。

https://aws.amazon.com/jp/products/


## AWSサービスとリソース

![P.4 AWSサービスとリソース](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2443303/fcb4820c-cc13-6a61-4f4c-5b170550b321.png)

AWSサービスには1つ以上の **リソース** が含まれています。

例えば、Amazon VPC という AWSサービス には、**VPC** や **Internet gateway**、**NAT gateway** といった **リソース** が含まれています。


## AWSサービスのAPI

![P.5 AWSサービスのAPI](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2443303/1afba696-684d-3915-dc5c-cb190fea7e46.png)

AWSサービスには **API** が用意されており、**APIを介してリソースを操作することができます。**

例えば、Amazon VPC という AWSサービス には、**DescribeVpcs** や **CreateVpc**、**DeleteVpc** といった **API** が用意されています。


## APIの確認

![P.6 APIの確認](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2443303/b8719605-70b1-bf2f-60da-eee2a8d99312.png)

AWSサービスにどのようなAPIが用意されているかは、公式ドキュメント（APIリファレンス）で確認することができます。

例えば、Amazon VPC の API は下記リンクから確認することができます。
これを見ると、**VPCs** や **Internet gateways** のようにリソース毎に **API (Actions)** が定義されていることがわかります。

https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/APIReference/OperationList-query-vpc.html


## APIの実行

![P.7 APIの実行](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2443303/678b2742-f30f-1826-d424-edc5e58a9128.png)

ここまで **AWSサービスのAPI** について確認してきました。
しかし、実際にはAWSを使用するユーザーが **AWSサービスのAPIを直接実行することはほとんどありません。**


![P.8 APIの実行](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2443303/aca1fce6-b09b-08c4-d155-1b53999a4a4f.png)

通常は、**AWS Management Console** や **AWS CLI**、**AWS SDK** などの **ツールを介してAWSサービスのAPIを実行しています。**

視点を変えると、**AWS Management Console** や **AWS CLI**、**AWS SDK** はAWSサービスのAPIを実行しやすくするためのツール、とも言えます。
* **AWS Management Console** → ユーザーがGUI操作によってAWSリソースを操作するためのツール
* **AWS CLI** → ユーザーがコマンドやスクリプトによってAWSリソースを操作するためのツール
* **AWS SDK** → JavaやPythonなどのプログラムからAWSリソースを操作するためのツール

:::note warn
なお、AWSサービスのAPIを直接実行することもやろうと思えば可能ですが、本記事では、その方法には言及しません。
興味のある方は **"aws api curl sigv4"** などのキーワードで検索してみてください。
:::

## 実行されたAPIの確認

![P.9 実行されたAPIの確認](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2443303/492c293a-5070-6385-6673-d435650d211c.png)

ここまで、AWS Management Console や AWS CLI、AWS SDK などのツールを介してAWSサービスのAPIを実行することを確認してきました。
では、それらのツールを介して実行されたAPIはどのように確認することができるでしょうか。
答えは、**AWS CloudTrail** というAWSサービスで確認することができます。

AWS Management Console から AWS CloudTrail の画面を開き、**イベント履歴** から実行されたAPIを確認することができます。

:::note warn
AWS CloudTrail のイベント履歴には、実行されたすべてのAPIが表示されます。
**ルックアップ属性** を **“ユーザー名”** に変更し、検索条件に自身のユーザー名を入力すると、自身が実行したAPIだけを確認することができます。
:::


## まとめ

![P.10 まとめ](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2443303/e4b265e4-484f-3462-1323-e68524baa388.png)

まとめです。

:::note
**各AWSサービスにはAPIが用意されており、それらを使用してリソースを操作する**
:::

:::note
**通常は、AWS Management Console や AWS CLI、AWS SDK などのツールを介してAWSサービスのAPIを実行している**
:::


## 付録

![P.11 付録](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2443303/451f1ae3-0af1-d838-15a0-f2181ded3765.png)

おまけです。

AWS Management Console でボタンを押したり、画面を切り替えた時にも、次に表示する情報を取得するため、AWSサービスのAPIが実行されています。
AWS Management Console でなにか操作した時に、裏でどのようなAPIが実行されているのかを AWS CloudTrail で確認してみると、イメージが湧き、理解が深まると思います。

:::note warn
AWS CloudTrail のイベント履歴に実行されたAPIが反映されるのには数分程度のタイムラグがあります。
反映されていない場合は少し時間をおいてから更新ボタンを押してみましょう。
:::


# あとがき

AWSサービスと、そのリソース、APIについて、理解が深まったでしょうか？
基本的なことではありますが、これらの概念をしっかりと覚えておくことが今後のスキルアップに役立つと考えています。
例えば、IAMロールやIAMポリシーによるアクセスコントロールのしくみは、これらの概念を正しく理解していないと、習得することが難しいと思います。

本記事がみなさまのスキルアップの一助になれば幸いです。

最後まで読んでいただき、ありがとうございました。
（いいねやストックをいただけると励みになります。）