こんにちは。SCSK渡辺(大)です。
今年は秋刀魚が非常に美味しいですね。
水揚げ量が昨年の2倍らしいので、まだまだ楽しめそうです。
何をつくったのか
Kiroに自然言語で依頼するだけでAWSリソース一覧を取得することができる環境 をつくりました。
サンプル:実行画面
完了するとMarkdown形式のテキストファイルが出来上がります。
サンプル:IAMユーザーの一覧
Kiroへの依頼は「IAMユーザーの一覧を取得して」というだけです。
注意事項を教えてくれました。
サンプル:EC2インスタンスの一覧(全リージョン)
Kiroへの依頼は「全リージョンのEC2インスタンスの一覧を取得して」というだけです。
リージョンのアクセス制限まで結果として出力してくれました。
テーブル形式で出力するようsteeringで指定しているのですが上手くいきませんでした。
内容は整理されていますね。
サンプル:特定タグが付いたリソースの一覧
Kiroへの依頼は「[key]=[value]タグのリソース一覧を取得して」というだけです。
プロジェクト分析してくれました。
嬉しいポイント
やったこと
Kiroで以下を設定しました。
- Agent Steering
- Trusted commands
- MCP Servers
その他、以下も設定しました。
- listHistoryフォルダの作成
- AWSCLIのcredentialsファイルを設定
Kiroの各種設定
Agent Steering


ファイル名は任意です。
私は「instructions.md」にしました。
「–profile sts」を付けるように指示している理由は参考記事をご参照ください。
--- inclusion: always --- # AWS CLI 利用ガイドライン ## 1. 概要 AWS を使用した開発プロジェクト全般に適用するガイドライン。 ## 2. 操作規則 ### 2.1 基本設定 | 項目 | 設定値 | 説明 | | ------------ | ------------------------------- | ------------------------------------------------ | | プロファイル | `--profile sts` | MFA 生成用プロファイル(固定) | | リージョン | `--region <region>` | 必須パラメータ(グローバルサービスは us-east-1) | | 出力形式 | `--no-cli-pager --output table` | リストコマンド用 | ### 2.2 コマンド履歴管理 **保存場所**: `listHistory/` ディレクトリ **ファイル名形式**: `YYYYMMDDHHMMSS_service-resource_region.md`(日時は'echo %date% %time%'で取得する) **構成**: サマリー → 実行コマンド → 出力結果(AWS CLI 出力は必ずテーブル形式のまま保存) **重要**: AWS CLI の`--output table`で取得した結果は、テーブル形式のまま履歴ファイルに記録すること **履歴ファイル記録ルール**: 1. 実行したコマンドをそのまま記録 2. AWS CLI のテーブル出力結果を整形せずそのままコピー 3. サマリーは別途作成するが、元の出力も必ず保持 4. 注意すべきことなどのコメントを付ける ### 2.3 実行前検証プロセス **必須**: AWS CLI コマンド実行前に以下を **必ず順番通りに** 実行する: #### ステップ 1: コマンド調査(必須) - **ツール**: `mcp_tavily_remote_mcp_tavily_search` - **目的**: 最新のコマンド情報、ベストプラクティス、既知の問題を確認 - **実行例**: `"AWS CLI iam list-users command latest syntax examples"` #### ステップ 2: 構文確認(必須) - **ツール**: `mcp_awslabs_aws_documentation_mcp_server_search_documentation` → `mcp_awslabs_aws_documentation_mcp_server_read_documentation` - **目的**: AWS 公式ドキュメントで正確な構文とパラメータを検証 - **確認項目**: 必須パラメータ、オプションパラメータ、出力形式 #### ステップ 3: パラメータ検証(必須) - **確認項目**: - 必須パラメータの有無 - リージョン要件(IAM はグローバルサービス = us-east-1) - プロファイル設定(`--profile sts`) - 出力形式(`--output table --no-cli-pager`) #### ステップ 4: 影響範囲確認(必須) - **確認項目**: - 対象リソースの範囲 - 実行に必要な権限 #### ステップ 5: 実行許可(必須) - **条件**: 上記ステップ 1-4 が全て完了した場合のみ実行 - **実行形式**: `aws <service> <operation> --profile sts --region <region> --output table --no-cli-pager` **重要**: この検証プロセスを省略した場合、コマンド実行は禁止
Trusted commands
設定>Trusted Commands から登録するよりも、Ctr+Shift+P(Windows)を押して「>基本設定: ユーザー設定を開く (JSON)」と入力して開き、”kiroAgent.trustedCommands”に以下を追加するほうが早いです。
すべてのコマンドを網羅できていない可能性がありますので、必要に応じて追加してご利用ください。
"kiroAgent.trustedCommands": [ "cd *", "ls", "dir", "pwd", "cat *", "type *", "echo *", "aws ec2 describe-instances *", "aws ec2 describe-vpcs *", "aws ec2 describe-subnets *", "aws ec2 describe-security-groups *", "aws ec2 describe-key-pairs *", "aws ec2 describe-images *", "aws ec2 describe-regions *", "aws ec2 describe-snapshots *", "aws ec2 describe-volumes *", "aws ec2 list-images *", "aws ec2 get-console-output *", "aws s3 ls *", "aws s3 head-object *", "aws s3 get-object-attributes *", "aws s3api list-buckets *", "aws s3api head-bucket *", "aws s3api get-bucket-location *", "aws s3api get-bucket-region *", "aws s3api get-bucket-versioning *", "aws s3api get-bucket-encryption *", "aws s3api get-bucket-cors *", "aws s3api get-bucket-lifecycle-configuration *", "aws s3api get-bucket-policy *", "aws s3api get-bucket-policy-status *", "aws s3api get-bucket-acl *", "aws s3api get-bucket-website *", "aws s3api get-bucket-logging *", "aws s3api get-bucket-notification-configuration *", "aws s3api get-bucket-replication *", "aws s3api get-bucket-request-payment *", "aws s3api get-bucket-tagging *", "aws s3api get-bucket-accelerate-configuration *", "aws s3api get-bucket-analytics-configuration *", "aws s3api get-bucket-inventory-configuration *", "aws s3api get-bucket-metrics-configuration *", "aws s3api get-bucket-ownership-controls *", "aws s3api get-bucket-intelligent-tiering-configuration *", "aws s3api get-public-access-block *", "aws s3api get-account-public-access-block *", "aws s3api list-objects *", "aws s3api list-objects-v2 *", "aws s3api list-object-versions *", "aws s3api list-multipart-uploads *", "aws s3api list-parts *", "aws s3api head-object *", "aws s3api get-object-attributes *", "aws s3api get-object-acl *", "aws s3api get-object-legal-hold *", "aws s3api get-object-lock-configuration *", "aws s3api get-object-retention *", "aws s3api get-object-tagging *", "aws s3api presign *", "aws s3api list-bucket-analytics-configurations *", "aws s3api list-bucket-inventory-configurations *", "aws s3api list-bucket-metrics-configurations *", "aws s3api list-bucket-intelligent-tiering-configurations *", "aws lambda list-functions *", "aws lambda get-function *", "aws lambda get-function-configuration *", "aws iam list-users *", "aws iam list-roles *", "aws iam list-policies *", "aws iam get-user *", "aws iam get-role *", "aws iam get-policy *", "aws rds describe-db-instances *", "aws rds describe-db-clusters *", "aws rds describe-db-snapshots *", "aws cloudformation list-stacks *", "aws cloudformation describe-stacks *", "aws cloudformation describe-stack-resources *", "aws logs describe-log-groups *", "aws logs describe-log-streams *", "aws dynamodb list-tables *", "aws dynamodb describe-table *", "aws apigateway get-rest-apis *", "aws apigateway get-resources *", "aws sns list-topics *", "aws sqs list-queues *", "aws route53 list-hosted-zones *", "aws cloudwatch list-metrics *", "aws cloudwatch describe-alarms *", "aws sts get-caller-identity *", "aws resourcegroupstaggingapi get-resources *", "aws resourcegroupstaggingapi get-tag-keys *", "aws resourcegroupstaggingapi get-tag-values *", "aws elbv2 describe-load-balancers *", "aws elbv2 describe-target-groups *", "aws autoscaling describe-auto-scaling-groups *", "aws ssm describe-parameters *", "aws ssm get-parameter *", "aws ssm get-parameters *", "aws secretsmanager list-secrets *", "aws secretsmanager describe-secret *", "aws kms list-keys *", "aws kms describe-key *", "aws cloudtrail describe-trails *", "aws config describe-configuration-recorders *", "aws organizations list-accounts *", "aws organizations describe-organization *", "aws support describe-cases *", "aws pricing get-products *", "aws ce get-cost-and-usage *", "aws budgets describe-budgets *" ],
「IAMで参照権限だけにして、Trusted commands は aws * だけ設定すれば良いのでは?」とも考えたのですが、それだとIAMに想定外の権限が付与されてしまっていた場合に、想定外のリソース操作が行われてしまうので採用しませんでした。Trusted commandsで参照系のコマンドだけを設定しておけば、IAMで参照権限以外の権限が付与されていても、Kiroが実行しようとしたコマンドをユーザーが手動でTrustしない限りは、想定外のリソース操作が行われることはないはずです。
MCP Servers



環境変数で渡すほうが安全です。
{ "mcpServers": { "aws-knowledge-mcp-server": { "command": "uvx", "args": [ "mcp-proxy", "--transport", "streamablehttp", "https://knowledge-mcp.global.api.aws" ], "env": { "FASTMCP_LOG_LEVEL": "ERROR", "AWS_PROFILE": "default", "AWS_REGION": "us-east-1", }, "disabled": false, "autoApprove": ["aws___search_documentation", "aws___read_documentation"] }, "tavily-remote-mcp": { "command": "npx", "args": [ "-y", "mcp-remote", "https://mcp.tavily.com/mcp/?tavilyApiKey=[取得したAPIキー]" ], "disabled": false, "autoApprove": ["tavily_search", "tavily_extract"] } } }
関連記事
感想
本記事の内容はKiroにプログラミングを組んでもらったというわけではないので、AWSが意図した使い方になっているのか分かりませんが、ソフトウェア開発以外の使い道があるのは良いですね。
いつかKiroがAgent Hooksなどでスケジュール起動できるようになったら、本記事の内容を1時間おきに実行させるようにすることで、ほぼリアルタイムで最新の一覧が取得できるようになりますね。夢が広がります。