
AWS Partner CentralのOpportunity情報をAWS CLIで取得してみた
コンバンハ、千葉(幸)です。
AWS Partner CentralはAWSパートナーがAWSとの協業を管理するためのハブです。共同販売、AWS Marketplaceでの製品/ソリューション販売、MDF(マーケティング開発資金)等プログラム特典申請などの機能を提供しています。
共同販売に関するところで言うと、パートナーが担当する商談は「Opportunity(オポチュニティ)」としてこのポータルに登録され、AWSの営業チームと情報を共有/管理できるようになっています。
このOpportunityはAWSマネジメントコンソール上のAWS Partner Centralから参照できるのですが、まとまった量を一気に確認したい時に1個ずつ参照するのは手間がかかります。
今回はAWS CLIを用いてOpportunityの情報を取得するアプローチを試してみました。
今回行うこと
以下2つのコマンドを実行してみます。
aws partnercentral-selling get-opportunity- パートナーが登録した商談の詳細情報を取得するコマンド
aws partnercentral-selling get-aws-opportunity-summary- 商談に対するAWS側の状況やAI insights(品質スコアや推奨アクションなど)を取得するコマンド
両者でどんな情報が取得できるか、取得できる情報にどんな差異があるかを確認してみます。
最後に、まとまった量を一括で取得するコマンド例も取り上げます。
なお、前提は下記のとおりです。
- AWS Partner Centralへの登録が完了していること
- 必要な権限を持ったIAMアイデンティティでアクセス可能な状態であること
aws partnercentral-selling get-opportunityで商談情報を取得する
aws partnercentral-selling get-opportunityはパートナーが自分で登録した商談の詳細情報(顧客企業情報、商談内容、営業活動履歴、ステージなど)を取得できるコマンドです。
コマンド実行時の指定オプション例は下記のとおり。
aws partnercentral-selling get-opportunity \
--catalog AWS \
--identifier <Opportunity ID> \
--region us-east-1
| オプション | 必須 | 内容 |
|---|---|---|
--catalog |
○ | AWSまたはSandbox。本番の商談を見るならAWS |
--identifier |
○ | 商談のOpportunity ID(O+数字、パターンO[0-9]{1,19}) |
--region |
- | us-east-1を明示的に指定 |
コマンドの出力結果のイメージは下記のとおりです。
{
"Catalog": "<カタログ種別(AWS または Sandbox)>",
"PrimaryNeedsFromAws": [
"<AWSへの依頼内容(Co-Sell種別。例: Co-Sell - Deal Support)>"
],
"NationalSecurity": "<国家安全保障関連案件かどうか(Yes/No)>",
"PartnerOpportunityIdentifier": "<パートナー側CRMでのこの商談の識別子>",
"Customer": {
"Account": {
"Industry": "<エンドカスタマーの業種>",
"CompanyName": "<エンドカスタマーの会社名>",
"WebsiteUrl": "<エンドカスタマーの会社WebサイトのURL>",
"AwsAccountId": "<エンドカスタマーのAWSアカウントID(12桁)>",
"Address": {
"PostalCode": "<エンドカスタマーの郵便番号>",
"CountryCode": "<エンドカスタマーの国コード(ISO、例: JP)>"
}
},
"Contacts": [
{
"Email": "<エンドカスタマー担当者のメールアドレス>",
"FirstName": "<エンドカスタマー担当者の名>",
"LastName": "<エンドカスタマー担当者の姓>",
"BusinessTitle": "<エンドカスタマー担当者の役職>",
"Phone": "<エンドカスタマー担当者の電話番号>"
}
]
},
"Project": {
"DeliveryModels": [
"<提供形態。SaaS or PaaS / BYOL or AMI / Managed Services / Professional Services / Resell / Other>"
],
"ExpectedCustomerSpend": [
{
"Amount": "<想定金額(数値文字列)>",
"CurrencyCode": "<通貨コード(USD/JPY等)>",
"Frequency": "<頻度。Monthly固定>",
"TargetCompany": "<集計対象。AWS=AWS算出のMRR推定値 / Self=パートナー独自のTCV入力>"
}
],
"Title": "<商談のタイトル・名称>",
"CustomerBusinessProblem": "<顧客の課題とパートナーの解決策の説明文(20〜2000文字)>",
"CustomerUseCase": "<想定ユースケース/ワークロード種別>",
"SalesActivities": [
"<実施済みの営業活動。Initialized discussions with customer 等の選択肢>"
]
},
"OpportunityType": "<商談種別。Net New Business(新規) / Flat Renewal(更新) / Expansion(拡張)>",
"Marketing": {
"CampaignName": "<AWSマーケティングキャンペーンコード>",
"Source": "<AWSマーケティング活動由来か。Marketing Activity / None>",
"AwsFundingUsed": "<MDF(マーケティング開発資金)を利用したか。Yes/No>"
},
"Id": "<商談の一意識別子。パターン: O[0-9]{1,19}>",
"Arn": "<商談を一意に識別するARN。形式: arn:aws:partnercentral:<リージョン>:<AWSアカウントID>:catalog/<Catalog>/opportunity/<Id>>",
"LastModifiedDate": "<最終更新日時>",
"CreatedDate": "<作成日時>",
"RelatedEntityIdentifiers": {
"Solutions": [
"<関連付けたパートナーソリューションID。パターン: S-[0-9]{1,19}>"
],
"AwsProducts": [
"<関連付けたAWS製品名>"
],
"AwsMarketplaceSolutions": [
"<関連付けたAWS Marketplaceソリューションのarn>"
]
},
"LifeCycle": {
"Stage": "<商談の進行ステージ。Prospect / Qualified / Technical Validation / Business Validation / Committed / Launched / Closed Lost>",
"TargetCloseDate": "<課金開始/本稼働開始の目標日>",
"ReviewStatus": "<AWSによるレビュー状況。Pending Submission / Submitted / In review / Approved / Rejected / Action Required>"
},
"OpportunityTeam": [
{
"Email": "<担当者メールアドレス>",
"FirstName": "<担当者名(名)>",
"LastName": "<担当者名(姓)>",
"BusinessTitle": "<役割。OpportunityOwner または PartnerAccountManager>",
"Phone": "<担当者電話番号>"
}
]
}
aws partnercentral-selling get-aws-opportunity-summaryでAWS側の情報を取得する
aws partnercentral-selling get-aws-opportunity-summaryは、登録されたOpportunityに対してAWSがどう見ているか(AWS側担当者、AWS独自のステージ把握、AIによる商談品質スコアや改善提案)を取得できるコマンドです。
コマンド実行時の指定オプション例は下記のとおり。
aws partnercentral-selling get-aws-opportunity-summary \
--catalog AWS \
--related-opportunity-identifier <Opportunity ID> \
--region us-east-1
| オプション | 必須 | 内容 |
|---|---|---|
--catalog |
○ | AWSまたはSandbox |
--related-opportunity-identifier |
○ | 紐付けたい商談のOpportunity ID |
--region |
- | us-east-1を明示的に指定 |
出力イメージは下記のとおりです。
{
"RelatedOpportunityId": "<パートナー側商談ID。パターン: O[0-9]{1,19}>",
"Origin": "<商談の発生元。AWS Referral(AWS発)/ Partner Referral(パートナー発)>",
"InvolvementType": "<AWSの関与タイプ。For Visibility Only(可視化のみ)/ Co-Sell(共同販売)>",
"Visibility": "<可視性レベル。Full / Limited(特別プログラムや機密案件向け)>",
"LifeCycle": {
"TargetCloseDate": "<課金開始/本稼働開始の目標日>",
"Stage": "<AWS側が把握している商談ステージ。未評価の場合は値が入らない>",
"NextSteps": "<AWSガイダンスに基づく直近のネクストステップ>"
},
"OpportunityTeam": [
{
"Email": "<AWS担当者のメールアドレス>",
"FirstName": "<AWS担当者の名>",
"LastName": "<AWS担当者の姓>",
"BusinessTitle": "<AWS担当者の役割。AWSSalesRep / AWSAccountOwner / WWPSPDM / PDM / PSM / ISVSM / Signatory>"
}
],
"Insights": {
"OpportunityQuality": {
"Score": "<商談内容の充実度スコア。0〜100の整数>",
"Trend": "<前回スコアからの傾向。Improving / Declining / No Change>"
},
"Recommendations": [
{
"Type": "<提案元の種別。OpportunityQuality / SolutionRecommendation / SpecialistRecommendation>",
"Details": "<AIによる改善提案の本文>"
}
]
},
"RelatedEntityIds": {
"Solutions": [
"<関連付けられたパートナーソリューションID>"
],
"AwsMarketplaceSolutions": [
"<関連付けられたAWS Marketplaceソリューションのarn>"
]
},
"Customer": {
"Contacts": []
},
"Project": {
"ExpectedCustomerSpend": [
{
"Amount": "<想定金額(数値文字列)>",
"CurrencyCode": "<通貨コード>",
"Frequency": "<頻度。Monthly固定>",
"TargetCompany": "<集計対象。AWS=AWS算出のMRR推定値>"
}
]
},
"CosellMotion": "<エンゲージメント分類。AWS Field-engaged / Agent-engaged / Partner-led>",
"Catalog": "<カタログ種別(AWS または Sandbox)>"
}
get-opportunityとget-aws-opportunity-summaryは何が違うのか
両者のコマンドで取得できる情報を比較してみました。列名は下記を表します。
opp:get-opportunityの結果summary:get-aws-opportunity-summaryの結果
トップレベル項目
| 項目 | opp | summary | 備考 |
|---|---|---|---|
| Catalog | ○ | ○ | 共通。AWS/Sandboxの区分 |
| Id / RelatedOpportunityId | ○ | ○ | 名前は違うが同じ商談IDを指す |
| Arn | ○ | × | 商談を一意に識別するARN |
| PartnerOpportunityIdentifier | ○ | × | パートナーCRM側の識別子 |
| PrimaryNeedsFromAws | ○ | × | AWSへの依頼内容(Co-Sell種別) |
| NationalSecurity | ○ | × | 国家安全保障関連案件かどうか |
| OpportunityType | ○ | × | 新規/更新/拡張の区分 |
| Marketing(CampaignName等) | ○ | × | マーケティング施策由来の情報 |
| LastModifiedDate / CreatedDate | ○ | × | 商談自体の更新・作成日時 |
| Origin | × | ○ | AWS Referral / Partner Referral |
| InvolvementType | × | ○ | For Visibility Only / Co-Sell |
| InvolvementTypeChangeReason | × | ○ | InvolvementType変更理由 |
| Visibility | × | ○ | Full / Limited |
| CosellMotion | × | ○ | AWS Field-engaged / Agent-engaged / Partner-led |
| Insights(品質スコア・AIレコメンド・支出インサイト) | × | ○ | summary固有のAI insights |
Customer
| 項目 | opp | summary | 備考 |
|---|---|---|---|
| Customer.Account(会社名・業種・住所・AWSアカウントID等) | ○ | × | エンドカスタマーの企業情報 |
| Customer.Contacts | ○ | ○ | 顧客側の担当者連絡先 |
Project
| 項目 | opp | summary | 備考 |
|---|---|---|---|
| ExpectedCustomerSpend | ○ | ○ | 同名だが算出主体が異なる |
| AwsPartition | ○ | ○ | aws-eusc等の区分 |
| DeliveryModels / Title / CustomerBusinessProblem / CustomerUseCase / SalesActivities / ApnPrograms / CompetitorName 等 | ○ | × | 商談の内容そのものを説明する項目群 |
| ExpectedContractDuration | ○ | × | TCV(契約総額)からMRRへの換算に使う契約期間 |
ExpectedCustomerSpendは、get-opportunityではパートナーが入力した想定支出額、get-aws-opportunity-summaryではAWS AI insightsが算出したMRR(≒月間AWS利用料)推定値が入ります。
LifeCycle
| 項目 | opp | summary | 備考 |
|---|---|---|---|
| Stage | ○ | ○ | oppはパートナー登録値、summaryはAWS側の把握値。未評価だと空になる |
| TargetCloseDate | ○ | ○ | 課金開始/本稼働開始の目標日 |
| NextSteps / NextStepsHistory | ○ | ○ | 直近のネクストステップとその履歴 |
| ClosedLostReason | ○ | ○ | Closed Lostの理由コード |
| ReviewStatus / ReviewComments / ReviewStatusReason | ○ | × | AWSによる商談レビューの状況 |
Stageは同名であるものの、同じ値を見ているわけではありません。ざっと確認した限りだと、「AWS側はブランク」「両者で異なる値が入る」のケースが多かったです。
OpportunityTeam
| 項目 | opp | summary | 備考 |
|---|---|---|---|
| Email / FirstName / LastName | ○ | ○ | oppではパートナー側担当者、summaryではAWS側担当者 |
| BusinessTitle | ○ | ○ | 値の選択肢が異なる |
| Phone | ○ | × | 担当者の電話番号 |
RelatedEntityIdentifiers / RelatedEntityIds
| 項目 | opp | summary | 備考 |
|---|---|---|---|
| Solutions | ○ | ○ | 関連付けたパートナーソリューションID(S-+数字) |
| AwsProducts | ○ | ○ | 関連付けたAWS製品名 |
| AwsMarketplaceSolutions | ○ | ○ | 関連付けたAWS Marketplaceソリューションのarn |
| AwsMarketplaceProducts | ○ | ○ | 関連付けたAWS Marketplace製品のarn |
| AwsMarketplaceOffers / AwsMarketplaceOfferSets | ○ | × | オファー単位の関連付け |
SoftwareRevenue
| 項目 | opp | summary | 備考 |
|---|---|---|---|
| Value(Amount, CurrencyCode) | ○ | ○ | PARC等の契約金額 |
| EffectiveDate / ExpirationDate | ○ | ○ | 契約の開始日・終了日 |
| DeliveryModel | ○ | × | Contract / Pay-as-you-go / Subscriptionの区分 |
| Discount | × | ○ | 割引率(例: 15.00 = 15%) |
共通して取得できる情報もあれば、一方にのみ存在するもの、似た項目名だが違うものを指しているものなど、差異のあり方について理解が進みました。
複数のOpportunityの情報をまとめて取得する
せっかくAWS CLIを使うなら、複数のOpportunityの情報を一括で取得したいです。情報の全量を取得するパターン、特定の項目について横串で取得するパターンをご紹介します。
対象としたいOpportunityのリストはこのような形でテキストファイルに保存されている前提とします。
O11111111
O22222222
O33333333
O44444444
O55555555
動作確認は下記環境で行なっています。
- macOS
- Zshバージョン:
zsh 5.9 (arm64-apple-darwin25.0) - AWS CLIバージョン:
aws-cli/2.36.19 Python/3.14.6 Darwin/25.5.0 exe/arm64 - Jqバージョン:
jq-1.6
複数のOpportunityの情報をjsonファイルにまとめる
2つのコマンドの結果をまとめて取得します。Opportunityごと、コマンドごとに1つのjsonファイルに結果を保存します。
ts=$(date +%Y%m%d_%H%M%S)
while read -r id; do
[ -z "$id" ] && continue
aws partnercentral-selling get-opportunity \
--catalog AWS \
--identifier "$id" \
--region us-east-1
> "${id}_get-opportunity_${ts}.json"
echo "saved: ${id}_get-opportunity_${ts}.json"
sleep 0.3
aws partnercentral-selling get-aws-opportunity-summary \
--catalog AWS \
--related-opportunity-identifier "$id" \
--region us-east-1
> "${id}_get-aws-opportunity-summary_${ts}.json"
echo "saved: ${id}_get-aws-opportunity-summary_${ts}.json"
sleep 0.3
done < OppIds.txt
実行イメージとしてはこのような形に。
saved: O11111111_get-opportunity_20260902_113612.json
saved: O11111111_get-aws-opportunity-summary_20260902_113612.json
saved: O22222222_get-opportunity_20260902_113612.json
saved: O22222222_get-aws-opportunity-summary_20260902_113612.json
saved: O33333333_get-opportunity_20260902_113612.json
saved: O33333333_get-aws-opportunity-summary_20260902_113612.json
saved: O44444444_get-opportunity_20260902_113612.json
saved: O44444444_get-aws-opportunity-summary_20260902_113612.json
saved: O55555555_get-opportunity_20260902_113612.json
saved: O55555555_get-aws-opportunity-summary_20260902_113612.json
特定の項目を横串で確認する
手っ取り早く特定の項目だけ確認したいというケースがあるかもしれません。どの項目を確認したいかは完全に要件によるのでコマンドをそのまま流用、というわけにはいきませんが一例として載せておきます。
今回はget-opportunityの下記項目を取得したいとします。
TitleExpectedCustomerSpend.AmountLifeCycle.Stage
その前提でのコマンド例はこちら。
{
printf "OppID\tTitle\tExpectedCustomerSpend.Amount\tLifeCycle.Stage\n"
while read -r id; do
[ -z "$id" ] && continue
result=$(aws partnercentral-selling get-opportunity \
--catalog AWS \
--identifier "$id" \
--region us-east-1)
title=$(echo "$result" | jq -r '.Project.Title // "-"')
amount=$(echo "$result" | jq -r '[.Project.ExpectedCustomerSpend[]? | select(.TargetCompany=="AWS")][0].Amount // "-"')
stage=$(echo "$result" | jq -r '.LifeCycle.Stage // "-"')
printf "%s\t%s\t%s\t%s\n" "$id" "$title" "$amount" "$stage"
sleep 0.3
done < OppIds.txt
} | column -t -s$'\t'
実行イメージはこのような形になります。
OppID Title ExpectedCustomerSpend.Amount LifeCycle.Stage
O11111111 技術支援案件A 1500 Launched
O22222222 技術支援案件B 2200 Qualified
O33333333 技術支援案件C 800 Technical Validation
O44444444 技術支援案件D 3000 Business Validation
O55555555 技術支援案件E 1200 Committed
終わりに
AWS CLIでAWS Partner CentralのOpportunity情報を取得してみた、という話でした。
単発で、複数Opportunityの特定の項目を確認したい、というケースにはちょうどよくハマるかと思います。AWSマネジメントコンソールから1個ずつ確認するには辛い、かといってスクリプトを組むほどではない、という場面でご参考ください。
以上、チバユキ (@batchicchi)がお送りしました。








