ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
このエラーの典型
HTTP/1.1 403 Forbidden
Content-Type: application/xml
InvalidClientTokenId
The AWS Access Key Id you provided does not exist in our records.
# 別パターン
SignatureDoesNotMatch
The request signature we calculated does not match the signature you provided.
# API Gateway
{"message":"Your credentials do not allow access to this resource."}
原因の切り分け
| エラーコード | 意味 | 対処 |
|---|---|---|
InvalidClientTokenId | AccessKey が存在しない | キーの値・コピー漏れ確認 |
SignatureDoesNotMatch | SecretKey 違い or 署名計算ミス | SecretKey 再生成 / SDK 利用 |
AccessDenied | IAM ポリシー不足 | 必要な Action / Resource 追加 |
TokenRefreshRequired | STS 一時クレデンシャル期限切れ | 再取得 |
OptInRequired | サービスのオプトイン未済 | マネジメントコンソールで有効化 |
| API Gateway 403 | API Key / IAM Auth / Lambda Authorizer | x-api-key ヘッダ確認 |
対処 1: 認証情報が本当に有効か確認
# AWS CLI で確認
aws sts get-caller-identity
# 正常なら以下のような JSON
# {
# "UserId": "AIDAEXAMPLE",
# "Account": "123456789012",
# "Arn": "arn:aws:iam::123456789012:user/myuser"
# }
# ❌ NG 例
# An error occurred (InvalidClientTokenId) when calling the GetCallerIdentity operation
# → AccessKey が無効。再発行 or 別プロファイル指定
# プロファイル指定
aws sts get-caller-identity --profile prod
aws sts get-caller-identity --region ap-northeast-1
対処 2: IAM ポリシーを確認
# 自分のユーザにアタッチされたポリシー
aws iam list-attached-user-policies --user-name myuser
aws iam list-user-policies --user-name myuser
# ポリシーの中身
aws iam get-policy --policy-arn arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess
aws iam get-policy-version --policy-arn ... --version-id v1
# 「この操作が許可されるか」シミュレーション
aws iam simulate-principal-policy \
--policy-source-arn arn:aws:iam::123456789012:user/myuser \
--action-names s3:GetObject \
--resource-arns arn:aws:s3:::my-bucket/key
対処 3: S3 で必要な最小ポリシー
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:DeleteObject"
],
"Resource": "arn:aws:s3:::my-bucket/*"
},
{
"Effect": "Allow",
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::my-bucket"
}
]
}
注意点:
- オブジェクト操作の Resource は
arn:aws:s3:::bucket/*(末尾/*) - ListBucket の Resource はバケット自体
arn:aws:s3:::bucket(*無し) - バケットポリシー側で deny されているとユーザ側で許可しても 403
対処 4: PA-API (Amazon Product Advertising)
Amazon アソシエイト向け API は通常の AWS IAM とは別系統:
- アソシエイト・セントラル → ツール → 商品リンク作成 → PA-API 5.0 で AccessKey / SecretKey 発行
- 過去 30 日でアフィリエイト売上ゼロだとアクセス権剥奪 → 1 件発生で復活
- Associate Tag (xxx-22 等) をリクエストに含める必要あり
- レート制限: 1 TPS / 8640 TPD (アフィリエイト売上に応じて緩和)
// PA-API 5.0 公式 SDK 利用例
ApiClient client = Configuration.getDefaultApiClient();
client.setAccessKey("AKIA...");
client.setSecretKey("...");
client.setHost("webservices.amazon.co.jp");
client.setRegion("us-west-2"); // PA-API は us-west-2 固定
DefaultApi api = new DefaultApi(client);
SearchItemsRequest req = new SearchItemsRequest()
.partnerTag("yourtag-22") // ← Associate Tag 必須
.partnerType(PartnerType.ASSOCIATES)
.keywords("Java入門")
.searchIndex("Books")
.resources(Arrays.asList(
SearchItemsResource.ITEMINFO_TITLE,
SearchItemsResource.IMAGES_PRIMARY_LARGE));
SearchItemsResponse res = api.searchItems(req);
対処 5: 署名 v4 の典型ミス
自前で署名計算する場合の落とし穴:
| ミス | 対処 |
|---|---|
| リージョン名違い (us-east-1 と us-west-2) | エンドポイント URL とリージョンを一致 |
| タイムスタンプが UTC でない | UTC で ISO8601 (20260517T120000Z) |
| クライアント時刻ずれ > 15 分 | NTP 同期 |
| クエリ文字列のソート漏れ | キー名 ASC でソートしてから連結 |
| x-amz-content-sha256 ヘッダ忘れ | S3 では必須 |
対処 6: API Gateway の場合
# API Key 必須エンドポイント
curl -H "x-api-key: YOUR_API_KEY" https://abc.execute-api.ap-northeast-1.amazonaws.com/prod/items
# IAM Auth 必須エンドポイント (SigV4)
aws apigateway get-rest-apis --region ap-northeast-1
# → SDK 経由で叩く
# Lambda Authorizer
# Authorization: Bearer xxx ヘッダの仕様を確認、Lambda 関数のログを CloudWatch で
セキュリティ注意
- AccessKey を GitHub に push しない。事故ったら即無効化 + 連絡
~/.aws/credentialsではなく IAM Role (EC2/ECS) / SSO を使う- 長期 AccessKey よりも STS 一時クレデンシャルを推奨
- 本番では 最小権限の原則。広い
*を避ける
FAQ
Q: コンソールから操作するとできるが、SDK だと 403
A: 別ユーザのキーを使っている可能性。aws sts get-caller-identity でユーザを確認。
Q: ローカルでは動くが Lambda で 403
A: Lambda 実行ロールに必要な権限が無い。AWSLambdaBasicExecutionRole に加え、対象サービスのポリシーを追加。
Q: PA-API で「TooManyRequests」が連続
A: 売上に応じてレート上限が変動。SDK のリトライ機能 + 指数バックオフで対応。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページ
子ページはありません
同階層のページ
- Your credentials do not allow access to this resource.
- Bad Authentication data.
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Laravel キャッシュクリア完全ガイド(cache:clear / config:clear / 2026-05-18 07:42:07
- プロジェクトの作成と削除 2026-05-18 07:42:07
- インストール直後にNetbeansが反応しない 2026-05-18 07:42:07
- 動画やチャンネルの検索 2026-05-18 07:42:07
- APIキー取得方法 2026-05-18 07:42:07
- チャンネル情報の取得 2026-05-18 07:42:07
- API 入門 — Web API(REST / GraphQL / gRPC / 2026-05-18 07:42:07
- インストール(eclipseプラグイン) 2026-05-18 07:42:07
- Laravel「Dotenv values containing spaces must be surrounded 2026-05-18 07:42:07
- エラー一覧 2026-05-18 07:42:07
- curl: (51) SSL: certificate subject name '~' does not match 2026-05-18 07:42:07
- インストール方法(Windows版) 2026-05-18 07:42:07
- JSONから配列に変換 2026-05-18 07:42:07
- 処理を一定時間待つ 2026-05-18 07:42:07
- A non well formed numeric value encountered 2026-05-18 07:42:07
コメントを削除してもよろしいでしょうか?