6 6
7> Konfigurasi Claude Code untuk menggunakan Claude API yang dioperasikan Anthropic dengan autentikasi AWS, kontrol akses IAM, dan penagihan AWS Marketplace.7> Konfigurasi Claude Code untuk menggunakan Claude API yang dioperasikan Anthropic dengan autentikasi AWS, kontrol akses IAM, dan penagihan AWS Marketplace.
8 8
9export const ContactSalesCard = ({surface}) => {
10 const utm = content => `utm_source=claude_code&utm_medium=docs&utm_content=${surface}_${content}`;
11 const iconArrowRight = (size = 13) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">
12 <line x1="5" y1="12" x2="19" y2="12" />
13 <polyline points="12 5 19 12 12 19" />
14 </svg>;
15 const STYLES = `
16.cc-cs {
17 --cs-slate: #141413;
18 --cs-clay: #d97757;
19 --cs-clay-deep: #c6613f;
20 --cs-gray-000: #ffffff;
21 --cs-gray-700: #3d3d3a;
22 --cs-border-default: rgba(31, 30, 29, 0.15);
23 font-family: inherit;
24}
25.dark .cc-cs {
26 --cs-slate: #f0eee6;
27 --cs-gray-000: #262624;
28 --cs-gray-700: #bfbdb4;
29 --cs-border-default: rgba(240, 238, 230, 0.14);
30}
31.cc-cs-card {
32 display: flex; align-items: center; justify-content: space-between;
33 gap: 16px; padding: 14px 16px; margin: 0;
34 background: var(--cs-gray-000); border: 0.5px solid var(--cs-border-default);
35 border-radius: 8px; flex-wrap: wrap;
36}
37.cc-cs-text { font-size: 13px; color: var(--cs-gray-700); line-height: 1.5; flex: 1; min-width: 240px; }
38.cc-cs-text strong { font-weight: 550; color: var(--cs-slate); }
39.cc-cs-actions { display: flex; align-items: center; gap: 8px; flex-shrink: 0; }
40.cc-cs-btn-clay {
41 display: inline-flex; align-items: center; gap: 8px;
42 background: var(--cs-clay-deep); color: #fff; border: none;
43 border-radius: 8px; padding: 8px 14px;
44 font-size: 13px; font-weight: 500;
45 transition: background-color 0.15s; white-space: nowrap;
46}
47.cc-cs-btn-clay:hover { background: var(--cs-clay); }
48.cc-cs-btn-ghost {
49 display: inline-flex; align-items: center; gap: 8px;
50 background: transparent; color: var(--cs-gray-700);
51 border: 0.5px solid var(--cs-border-default);
52 border-radius: 8px; padding: 8px 14px;
53 font-size: 13px; font-weight: 500;
54}
55.cc-cs-btn-ghost:hover { background: rgba(0, 0, 0, 0.04); }
56.dark .cc-cs-btn-ghost:hover { background: rgba(255, 255, 255, 0.04); }
57@media (max-width: 720px) {
58 .cc-cs-actions { width: 100%; }
59}
60`;
61 return <div className="cc-cs not-prose">
62 <style>{STYLES}</style>
63 <div className="cc-cs-card">
64 <div className="cc-cs-text">
65 <strong>Deploying Claude Code across your organization?</strong> Talk to sales about enterprise plans, SSO, and centralized billing.
66 </div>
67 <div className="cc-cs-actions">
68 <a href={`https://claude.com/pricing?${utm('view_plans')}#plans-business`} className="cc-cs-btn-ghost">
69 View plans
70 </a>
71 <a href={`https://claude.com/contact-sales?${utm('contact_sales')}`} className="cc-cs-btn-clay">
72 Contact sales {iconArrowRight()}
73 </a>
74 </div>
75 </div>
76 </div>;
77};
78
79export const Experiment = ({flag, treatment, children}) => {
80 const VID_KEY = 'exp_vid';
81 const CONSENT_COUNTRIES = new Set(['AT', 'BE', 'BG', 'HR', 'CY', 'CZ', 'DK', 'EE', 'FI', 'FR', 'DE', 'GR', 'HU', 'IE', 'IT', 'LV', 'LT', 'LU', 'MT', 'NL', 'PL', 'PT', 'RO', 'SK', 'SI', 'ES', 'SE', 'RE', 'GP', 'MQ', 'GF', 'YT', 'BL', 'MF', 'PM', 'WF', 'PF', 'NC', 'AW', 'CW', 'SX', 'FO', 'GL', 'AX', 'GB', 'UK', 'AI', 'BM', 'IO', 'VG', 'KY', 'FK', 'GI', 'MS', 'PN', 'SH', 'TC', 'GG', 'JE', 'IM', 'CA', 'BR', 'IN']);
82 const fnv1a = s => {
83 let h = 0x811c9dc5;
84 for (let i = 0; i < s.length; i++) {
85 h ^= s.charCodeAt(i);
86 h += (h << 1) + (h << 4) + (h << 7) + (h << 8) + (h << 24);
87 }
88 return h >>> 0;
89 };
90 const bucket = (seed, vid) => fnv1a(fnv1a(seed + vid) + '') % 10000 < 5000 ? 'control' : 'treatment';
91 const [decision] = useState(() => {
92 const params = new URLSearchParams(location.search);
93 const preBucketed = document.documentElement.dataset['gb_' + flag.replace(/-/g, '_')];
94 const force = params.get('gb-force');
95 if (force) {
96 for (const p of force.split(',')) {
97 const [k, v] = p.split(':');
98 if (k === flag) return {
99 variant: v || 'treatment',
100 track: false
101 };
102 }
103 }
104 if (navigator.globalPrivacyControl) {
105 return {
106 variant: 'control',
107 track: false
108 };
109 }
110 const prefsMatch = document.cookie.match(/(?:^|; )anthropic-consent-preferences=([^;]+)/);
111 if (prefsMatch) {
112 try {
113 if (JSON.parse(decodeURIComponent(prefsMatch[1])).analytics !== true) {
114 return {
115 variant: 'control',
116 track: false
117 };
118 }
119 } catch {
120 return {
121 variant: 'control',
122 track: false
123 };
124 }
125 } else {
126 const country = params.get('country')?.toUpperCase() || (document.cookie.match(/(?:^|; )cf_geo=([A-Z]{2})/) || [])[1];
127 if (!country || CONSENT_COUNTRIES.has(country)) {
128 return {
129 variant: 'control',
130 track: false
131 };
132 }
133 }
134 let vid;
135 try {
136 const ajsMatch = document.cookie.match(/(?:^|; )ajs_anonymous_id=([^;]+)/);
137 if (ajsMatch) {
138 vid = decodeURIComponent(ajsMatch[1]).replace(/^"|"$/g, '');
139 } else {
140 vid = localStorage.getItem(VID_KEY);
141 if (!vid) {
142 vid = crypto.randomUUID();
143 }
144 document.cookie = `ajs_anonymous_id=${vid}; domain=.claude.com; path=/; Secure; SameSite=Lax; max-age=31536000`;
145 }
146 try {
147 localStorage.setItem(VID_KEY, vid);
148 } catch {}
149 } catch {
150 return {
151 variant: 'control',
152 track: false
153 };
154 }
155 const variant = preBucketed === '1' ? 'treatment' : preBucketed === '0' ? 'control' : bucket(flag, vid);
156 return {
157 variant,
158 track: true,
159 vid
160 };
161 });
162 useEffect(() => {
163 if (!decision.track) return;
164 fetch('https://api.anthropic.com/api/event_logging/v2/batch', {
165 method: 'POST',
166 headers: {
167 'Content-Type': 'application/json',
168 'x-service-name': 'claude_code_docs'
169 },
170 body: JSON.stringify({
171 events: [{
172 event_type: 'GrowthbookExperimentEvent',
173 event_data: {
174 device_id: decision.vid,
175 anonymous_id: decision.vid,
176 timestamp: new Date().toISOString(),
177 experiment_id: flag,
178 variation_id: decision.variant === 'treatment' ? 1 : 0,
179 environment: 'production'
180 }
181 }]
182 }),
183 keepalive: true
184 }).catch(() => {});
185 }, []);
186 return decision.variant === 'treatment' ? treatment : children;
187};
188
189<Experiment flag="docs-contact-sales-cta" treatment={<ContactSalesCard surface="claude_platform_on_aws" />} />
190
191Claude Platform on AWS adalah Claude API yang dioperasikan Anthropic dengan autentikasi AWS, kontrol akses IAM, dan penagihan AWS Marketplace. Permintaan mencapai API Anthropic secara langsung, sehingga Anda mendapatkan model dan fitur yang sama seperti [Claude API](https://platform.claude.com/docs) dengan jadwal rilis yang sama. Anda melakukan autentikasi dengan kredensial AWS atau kunci API workspace, dan Anda membayar melalui AWS Marketplace.9Claude Platform on AWS adalah Claude API yang dioperasikan Anthropic dengan autentikasi AWS, kontrol akses IAM, dan penagihan AWS Marketplace. Permintaan mencapai API Anthropic secara langsung, sehingga Anda mendapatkan model dan fitur yang sama seperti [Claude API](https://platform.claude.com/docs) dengan jadwal rilis yang sama. Anda melakukan autentikasi dengan kredensial AWS atau kunci API workspace, dan Anda membayar melalui AWS Marketplace.
192 10
193Gunakan panduan ini untuk mengarahkan Claude Code ke workspace yang telah Anda sediakan melalui Claude Platform on AWS. Untuk langganan AWS dan penyiapan workspace yang dilakukan sebelumnya, lihat [dokumentasi Claude Platform on AWS](https://platform.claude.com/docs/en/build-with-claude/claude-platform-on-aws).11Gunakan panduan ini untuk mengarahkan Claude Code ke workspace yang telah Anda sediakan melalui Claude Platform on AWS. Untuk langganan AWS dan penyiapan workspace yang dilakukan sebelumnya, lihat [dokumentasi Claude Platform on AWS](https://platform.claude.com/docs/en/build-with-claude/claude-platform-on-aws).
196 Berlangganan melalui AWS Marketplace menyediakan organisasi Anthropic baru yang terikat ke akun AWS Anda. Organisasi ini terpisah dari organisasi apa pun yang sudah Anda miliki dengan Anthropic, dan kredensial tidak ditransfer di antara keduanya. Gunakan ID workspace dan kunci API dari organisasi yang terhubung dengan AWS, bukan dari akun Claude Console yang sudah ada sebelumnya.14 Berlangganan melalui AWS Marketplace menyediakan organisasi Anthropic baru yang terikat ke akun AWS Anda. Organisasi ini terpisah dari organisasi apa pun yang sudah Anda miliki dengan Anthropic, dan kredensial tidak ditransfer di antara keduanya. Gunakan ID workspace dan kunci API dari organisasi yang terhubung dengan AWS, bukan dari akun Claude Console yang sudah ada sebelumnya.
197</Note>15</Note>
198 16
199## Prasyarat17<h2 id="prerequisites">
18 Prasyarat
19</h2>
200 20
201Sebelum mengonfigurasi Claude Code, Anda memerlukan:21Sebelum mengonfigurasi Claude Code, Anda memerlukan:
202 22
205* Prinsipal IAM dengan izin untuk memanggil layanan Anthropic, atau kunci API yang dibatasi pada workspace25* Prinsipal IAM dengan izin untuk memanggil layanan Anthropic, atau kunci API yang dibatasi pada workspace
206* Kredensial AWS di lingkungan Anda, di `~/.aws/credentials`, atau dari peran IAM yang terpasang jika Anda ingin autentikasi SigV4. AWS CLI hanya diperlukan untuk alur login SSO.26* Kredensial AWS di lingkungan Anda, di `~/.aws/credentials`, atau dari peran IAM yang terpasang jika Anda ingin autentikasi SigV4. AWS CLI hanya diperlukan untuk alur login SSO.
207 27
208## Penyiapan28<h2 id="setup">
29 Penyiapan
30</h2>
209 31
210### 1. Konfigurasi kredensial AWS32<h3 id="1-configure-aws-credentials">
33 1. Konfigurasi kredensial AWS
34</h3>
211 35
212Claude Code mendukung dua metode autentikasi untuk Claude Platform on AWS. Pilih metode yang sesuai dengan cara tim Anda mengelola akses.36Claude Code mendukung dua metode autentikasi untuk Claude Platform on AWS. Pilih metode yang sesuai dengan cara tim Anda mengelola akses.
213 37
248 Perintah `/login` dan `/logout` tidak mengubah autentikasi Claude Platform on AWS. Autentikasi berjalan melalui kredensial AWS Anda atau kunci API workspace, bukan melalui langganan Claude.ai.72 Perintah `/login` dan `/logout` tidak mengubah autentikasi Claude Platform on AWS. Autentikasi berjalan melalui kredensial AWS Anda atau kunci API workspace, bukan melalui langganan Claude.ai.
249</Note>73</Note>
250 74
251### 2. Konfigurasi Claude Code75<h3 id="2-configure-claude-code">
76 2. Konfigurasi Claude Code
77</h3>
252 78
253Atur variabel lingkungan yang mengarahkan Claude Code melalui Claude Platform on AWS alih-alih API Anthropic default.79Atur variabel lingkungan yang mengarahkan Claude Code melalui Claude Platform on AWS alih-alih API Anthropic default.
254 80
262 88
263Claude Platform on AWS bersifat opt-in bahkan ketika kredensial AWS ada di lingkungan Anda. Bedrock dan Foundry mengambil prioritas dalam perutean penyedia, jadi batalkan `CLAUDE_CODE_USE_BEDROCK` dan `CLAUDE_CODE_USE_FOUNDRY` jika diatur.89Claude Platform on AWS bersifat opt-in bahkan ketika kredensial AWS ada di lingkungan Anda. Bedrock dan Foundry mengambil prioritas dalam perutean penyedia, jadi batalkan `CLAUDE_CODE_USE_BEDROCK` dan `CLAUDE_CODE_USE_FOUNDRY` jika diatur.
264 90
265### 3. Sematkan versi model91<h3 id="3-pin-model-versions">
92 3. Sematkan versi model
93</h3>
266 94
267Claude Platform on AWS menggunakan ID model yang sama seperti Claude API langsung. Alias default `opus`, `sonnet`, dan `haiku` diselesaikan ke versi terbaru yang tersedia di workspace Anda.95Claude Platform on AWS menggunakan ID model yang sama seperti Claude API langsung. Alias default `opus`, `sonnet`, dan `haiku` diselesaikan ke versi terbaru yang tersedia di workspace Anda.
268 96
276 104
277Untuk daftar lengkap ID model dan alias, lihat [Models overview](https://platform.claude.com/docs/en/about-claude/models/overview). Untuk variabel terkait model lainnya, lihat [Model configuration](/id/model-config).105Untuk daftar lengkap ID model dan alias, lihat [Models overview](https://platform.claude.com/docs/en/about-claude/models/overview). Untuk variabel terkait model lainnya, lihat [Model configuration](/id/model-config).
278 106
279[Prompt caching](https://platform.claude.com/docs/en/build-with-claude/prompt-caching) diaktifkan secara otomatis. Penulisan cache 1 jam ditagih dengan tarif lebih tinggi daripada penulisan 5 menit. Untuk meminta TTL cache 1 jam alih-alih default 5 menit, atur `ENABLE_PROMPT_CACHING_1H=1`.107[Prompt caching](/id/prompt-caching) diaktifkan secara otomatis. Untuk meminta TTL cache 1 jam alih-alih default 5 menit, atur `ENABLE_PROMPT_CACHING_1H=1`. API menagih penulisan cache 1 jam dengan tarif lebih tinggi. Lihat [prompt caching pricing](https://platform.claude.com/docs/en/build-with-claude/prompt-caching#pricing) untuk tarifnya.
280 108
281## Gunakan Agent SDK109<h2 id="use-the-agent-sdk">
110 Gunakan Agent SDK
111</h2>
282 112
283[Agent SDK](/id/agent-sdk/overview) membaca variabel lingkungan yang sama dengan CLI, sehingga program apa pun yang menjalankan subprocess Claude Code dapat menargetkan Claude Platform on AWS dengan mengekspor `CLAUDE_CODE_USE_ANTHROPIC_AWS`, `ANTHROPIC_AWS_WORKSPACE_ID`, dan baik `ANTHROPIC_AWS_API_KEY` atau kredensial AWS sebelum panggilan.113[Agent SDK](/id/agent-sdk/overview) membaca variabel lingkungan yang sama dengan CLI, sehingga program apa pun yang menjalankan subprocess Claude Code dapat menargetkan Claude Platform on AWS dengan mengekspor `CLAUDE_CODE_USE_ANTHROPIC_AWS`, `ANTHROPIC_AWS_WORKSPACE_ID`, dan baik `ANTHROPIC_AWS_API_KEY` atau kredensial AWS sebelum panggilan.
284 114
296 126
297Contoh ini bergantung pada rantai kredensial AWS ambient untuk SigV4. Untuk melakukan autentikasi dengan kunci API workspace sebagai gantinya, atur `ANTHROPIC_AWS_API_KEY` dengan cara yang sama. Untuk permukaan Agent SDK yang lebih luas, lihat [Agent SDK overview](/id/agent-sdk/overview).127Contoh ini bergantung pada rantai kredensial AWS ambient untuk SigV4. Untuk melakukan autentikasi dengan kunci API workspace sebagai gantinya, atur `ANTHROPIC_AWS_API_KEY` dengan cara yang sama. Untuk permukaan Agent SDK yang lebih luas, lihat [Agent SDK overview](/id/agent-sdk/overview).
298 128
299## Rute melalui proxy korporat129<h2 id="route-through-a-corporate-proxy">
130 Rute melalui proxy korporat
131</h2>
300 132
301Untuk mengarahkan lalu lintas melalui proxy atau [LLM gateway](/id/llm-gateway), atur `ANTHROPIC_AWS_BASE_URL` ke alamat proxy. Claude Code mengirim permintaan ke URL tersebut dengan header workspace dan autentikasi yang sama, sehingga gateway apa pun yang meneruskannya tanpa perubahan berfungsi.133Untuk mengarahkan lalu lintas melalui proxy atau [LLM gateway](/id/llm-gateway), atur `ANTHROPIC_AWS_BASE_URL` ke alamat proxy. Claude Code mengirim permintaan ke URL tersebut dengan header workspace dan autentikasi yang sama, sehingga gateway apa pun yang meneruskannya tanpa perubahan berfungsi.
302 134
315export ANTHROPIC_AWS_BASE_URL=https://anthropic-proxy.example.com147export ANTHROPIC_AWS_BASE_URL=https://anthropic-proxy.example.com
316```148```
317 149
318## Troubleshooting150<h2 id="troubleshooting">
151 Troubleshooting
152</h2>
319 153
320Jalankan `/status` untuk melihat penyedia yang diselesaikan dan ID workspace, region, penggantian URL dasar, dan pengaturan skip-auth yang dikonfigurasi secara eksplisit. Ini adalah cara tercepat untuk mengonfirmasi Claude Code menargetkan Claude Platform on AWS sama sekali.154Jalankan `/status` untuk melihat penyedia yang diselesaikan dan ID workspace, region, penggantian URL dasar, dan pengaturan skip-auth yang dikonfigurasi secara eksplisit. Ini adalah cara tercepat untuk mengonfirmasi Claude Code menargetkan Claude Platform on AWS sama sekali.
321 155
322### `403 Forbidden` atau `AccessDenied` pada setiap permintaan156<h3 id="403-forbidden-or-accessdenied-on-every-request">
157 `403 Forbidden` atau `AccessDenied` pada setiap permintaan
158</h3>
323 159
324Prinsipal IAM yang diselesaikan Claude Code kemungkinan besar tidak memiliki izin untuk memanggil layanan Anthropic di workspace Anda. Periksa peran yang terpasang pada profil AWS Anda atau runner yang memulai Claude Code, dan verifikasi bahwa ia memiliki tindakan `aws-external-anthropic` yang didokumentasikan dalam [referensi tindakan IAM](https://platform.claude.com/docs/en/api/claude-platform-on-aws-iam-actions).160Prinsipal IAM yang diselesaikan Claude Code kemungkinan besar tidak memiliki izin untuk memanggil layanan Anthropic di workspace Anda. Periksa peran yang terpasang pada profil AWS Anda atau runner yang memulai Claude Code, dan verifikasi bahwa ia memiliki tindakan `aws-external-anthropic` yang didokumentasikan dalam [referensi tindakan IAM](https://platform.claude.com/docs/en/api/claude-platform-on-aws-iam-actions).
325 161
326Jika Anda menetapkan `ANTHROPIC_AWS_API_KEY`, kunci mengambil prioritas atas SigV4 dan kunci yang sudah usang menghasilkan kesalahan yang sama. Buat ulang kunci di AWS Console di bawah **Claude Platform on AWS → API keys** atau batalkan variabel untuk kembali ke kredensial AWS Anda.162Jika Anda menetapkan `ANTHROPIC_AWS_API_KEY`, kunci mengambil prioritas atas SigV4 dan kunci yang sudah usang menghasilkan kesalahan yang sama. Buat ulang kunci di AWS Console di bawah **Claude Platform on AWS → API keys** atau batalkan variabel untuk kembali ke kredensial AWS Anda.
327 163
328### Permintaan gagal dengan kesalahan workspace yang hilang164<h3 id="requests-fail-with-a-missing-workspace-error">
165 Permintaan gagal dengan kesalahan workspace yang hilang
166</h3>
329 167
330`ANTHROPIC_AWS_WORKSPACE_ID` kemungkinan besar tidak diatur atau kosong. Setiap permintaan Claude Platform on AWS harus menyertakan ID workspace. Ini tidak tersirat oleh kredensial AWS Anda. Temukan ID di bawah **Workspaces** pada halaman layanan AWS Console dan ekspor sebelum memulai Claude Code.168`ANTHROPIC_AWS_WORKSPACE_ID` kemungkinan besar tidak diatur atau kosong. Setiap permintaan Claude Platform on AWS harus menyertakan ID workspace. Ini tidak tersirat oleh kredensial AWS Anda. Temukan ID di bawah **Workspaces** pada halaman layanan AWS Console dan ekspor sebelum memulai Claude Code.
331 169
332### Permintaan masih pergi ke `api.anthropic.com`170<h3 id="requests-still-go-to-api-anthropic-com">
171 Permintaan masih pergi ke `api.anthropic.com`
172</h3>
333 173
334`CLAUDE_CODE_USE_ANTHROPIC_AWS` kemungkinan besar tidak diatur atau diatur ke nilai yang tidak diuraikan sebagai truthy. Aturnya ke `1` dan jalankan `/status` untuk mengonfirmasi penyedia yang diselesaikan. Jika `CLAUDE_CODE_USE_BEDROCK` atau `CLAUDE_CODE_USE_FOUNDRY` juga diatur, keduanya mengambil prioritas atas Claude Platform on AWS.174`CLAUDE_CODE_USE_ANTHROPIC_AWS` kemungkinan besar tidak diatur atau diatur ke nilai yang tidak diuraikan sebagai truthy. Aturnya ke `1` dan jalankan `/status` untuk mengonfirmasi penyedia yang diselesaikan. Jika `CLAUDE_CODE_USE_BEDROCK` atau `CLAUDE_CODE_USE_FOUNDRY` juga diatur, keduanya mengambil prioritas atas Claude Platform on AWS.
335 175
336## Sumber daya tambahan176<h2 id="additional-resources">
177 Sumber daya tambahan
178</h2>
337 179
338Langganan Claude Platform on AWS, workspace, dan penyiapan IAM yang dilakukan sebelum mengonfigurasi Claude Code tercakup dalam dokumentasi platform:180Langganan Claude Platform on AWS, workspace, dan penyiapan IAM yang dilakukan sebelum mengonfigurasi Claude Code tercakup dalam dokumentasi platform:
339 181