Panduan Referensi API AWS SDK untuk JavaScript V3 menjelaskan secara rinci semua operasi API untuk AWS SDK untuk JavaScript versi 3 (V3).

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Memulai di React Native

Tutorial ini menunjukkan kepada Anda bagaimana Anda dapat membuat aplikasi React Native menggunakan React Native CLI.

JavaScript code example that applies to React Native.

Tutorial ini menunjukkan kepada Anda:

  • Cara menginstal dan menyertakan modul AWS SDK untuk JavaScript versi 3 (V3) yang digunakan proyek Anda.

  • Cara menulis kode yang terhubung ke Amazon Simple Storage Service (Amazon S3) untuk membuat dan menghapus bucket Amazon S3.

Skenario

Amazon S3 adalah layanan cloud yang memungkinkan Anda menyimpan dan mengambil sejumlah data kapan saja, dari mana saja di web. React Native adalah framework pengembangan yang memungkinkan Anda membuat aplikasi mobile. Tutorial ini menunjukkan kepada Anda bagaimana Anda dapat membuat aplikasi React Native yang terhubung ke Amazon S3 untuk membuat dan menghapus bucket Amazon S3.

Aplikasi ini menggunakan SDK berikut untuk JavaScript APIs:

Tugas prasyarat

catatan

Jika Anda telah menyelesaikan salah satu langkah berikut melalui tutorial lain atau konfigurasi yang ada, lewati langkah-langkah tersebut.

Bagian ini menyediakan pengaturan minimal yang diperlukan untuk menyelesaikan tutorial ini. Anda seharusnya tidak menganggap ini sebagai pengaturan penuh. Untuk itu, lihatSiapkan SDK untuk JavaScript.

  • Instal alat-alat berikut:

  • Siapkan lingkungan pengembangan React Native

  • Siapkan lingkungan proyek untuk menjalankan TypeScript contoh Node ini, dan instal modul yang diperlukan AWS SDK untuk JavaScript dan pihak ketiga. Ikuti instruksi pada GitHub.

  • Anda harus menetapkan bagaimana kode Anda mengautentikasi AWS saat mengembangkan dengan AWS layanan. Untuk informasi selengkapnya, lihat Otentikasi SDK dengan AWS.

    catatan

    Peran IAM untuk contoh ini harus disetel untuk menggunakan izin FullAccessAmazonS3.

Langkah 1: Buat Kolam Identitas Amazon Cognito

Dalam latihan ini, Anda membuat dan menggunakan kumpulan Identitas Amazon Cognito untuk menyediakan akses tidak terautentikasi ke aplikasi Anda untuk layanan Amazon S3. Membuat kumpulan identitas juga menciptakan dua peran AWS Identity and Access Management (IAM), satu untuk mendukung pengguna yang diautentikasi oleh penyedia identitas dan yang lainnya untuk mendukung pengguna tamu yang tidak diautentikasi.

Dalam latihan ini, kami hanya akan bekerja dengan peran pengguna yang tidak diautentikasi untuk menjaga tugas tetap fokus. Anda dapat mengintegrasikan dukungan untuk penyedia identitas dan pengguna yang diautentikasi nanti.

Untuk membuat kumpulan Identitas Amazon Cognito
  1. Masuk ke AWS Management Console dan buka konsol Amazon Cognito di Amazon Web Services Console.

  2. Pilih Identity Pools di halaman pembuka konsol.

  3. Pada halaman berikutnya, pilih Buat kumpulan identitas baru.

    catatan

    Jika tidak ada kumpulan identitas lain, konsol Amazon Cognito akan melewati halaman ini dan membuka halaman berikutnya sebagai gantinya.

  4. Di Konfigurasikan kepercayaan kumpulan identitas, pilih Akses tamu untuk otentikasi pengguna.

  5. Di Konfigurasi izin, pilih Buat peran IAM baru dan masukkan nama (misalnya, getStartedReactPeran) dalam nama peran IAM.

  6. Di Konfigurasi properti, masukkan nama (misalnya, getStartedReactPool) di nama kumpulan Identity.

  7. Di Tinjau dan buat, konfirmasikan pilihan yang Anda buat untuk kumpulan identitas baru Anda. Pilih Edit untuk kembali ke wizard dan mengubah pengaturan apa pun. Setelah selesai, pilih Buat kumpulan identitas.

  8. Perhatikan ID kumpulan identitas dan Wilayah untuk kumpulan identitas yang baru dibuat ini. Anda memerlukan nilai-nilai ini untuk menggantikan region dan identityPoolId dalam skrip browser Anda.

Setelah membuat kumpulan identitas Amazon Cognito, Anda siap menambahkan izin untuk Amazon S3 yang diperlukan oleh aplikasi React Native Anda.

Langkah 2: Tambahkan Kebijakan ke Peran IAM yang Dibuat

Untuk mengaktifkan akses skrip browser ke Amazon S3 untuk membuat dan menghapus bucket Amazon S3, gunakan peran IAM yang tidak diautentikasi yang dibuat untuk kumpulan identitas Amazon Cognito Anda. Ini mengharuskan Anda untuk menambahkan kebijakan IAM ke peran tersebut. Untuk informasi selengkapnya tentang peran IAM, lihat Membuat Peran untuk Mendelegasikan Izin ke AWS Layanan di Panduan Pengguna IAM.

Untuk menambahkan kebijakan Amazon S3 ke peran IAM yang terkait dengan pengguna yang tidak diautentikasi
  1. Masuk ke AWS Management Console dan buka konsol IAM di https://console.aws.amazon.com/iam/.

  2. Di panel navigasi sebelah kiri, pilih Peran.

  3. Pilih nama peran yang ingin Anda ubah (misalnya, getStartedRole), lalu pilih tab Izin.

  4. Pilih Tambahkan izin, lalu pilih Lampirkan kebijakan.

  5. Di halaman Tambahkan izin untuk peran ini, temukan lalu pilih kotak centang untuk ReadOnlyAccessAmazonS3.

    catatan

    Anda dapat menggunakan proses ini untuk mengaktifkan akses ke AWS layanan apa pun.

  6. Pilih Tambahkan izin.

Setelah membuat kumpulan identitas Amazon Cognito dan menambahkan izin untuk Amazon S3 ke peran IAM Anda untuk pengguna yang tidak diautentikasi, Anda siap untuk membuat aplikasi.

Langkah 3: Buat aplikasi menggunakan create-react-native-app

Buat React Native App dengan menjalankan perintah berikut.

npx react-native init ReactNativeApp --npm

Langkah 4: Instal paket Amazon S3 dan dependensi lainnya

Di dalam direktori proyek, jalankan perintah berikut untuk menginstal paket Amazon S3.

npm install @aws-sdk/client-s3

Perintah ini menginstal paket Amazon S3 di project Anda, dan package.json memperbarui untuk mencantumkan Amazon S3 sebagai dependensi proyek. Anda dapat menemukan informasi tentang paket ini dengan mencari "@aws -sdk” di situs web https://www.npmjs.com/ npm.

Paket-paket ini dan kode terkaitnya dipasang di node_modules subdirektori proyek Anda.

Untuk informasi selengkapnya tentang menginstal paket Node.js, lihat Mengunduh dan menginstal paket secara lokal dan Membuat modul Node.js di situs web npm (Node.js package manager). Untuk informasi tentang mengunduh dan menginstal AWS SDK untuk JavaScript, lihatInstal SDK untuk JavaScript.

Instal dependensi lain yang diperlukan untuk otentikasi.

npm install @aws-sdk/client-cognito-identity @aws-sdk/credential-provider-cognito-identity

Langkah 5: Tulis kode React Native

Tambahkan kode berikut ke fileApp.tsx. Ganti identityPoolId dan region dengan ID kumpulan identitas dan Wilayah tempat bucket Amazon S3 Anda akan dibuat.

import React, { useCallback, useState } from "react"; import { Button, StyleSheet, Text, TextInput, View } from "react-native"; import "react-native-get-random-values"; import "react-native-url-polyfill/auto"; import { S3Client, CreateBucketCommand, DeleteBucketCommand, } from "@aws-sdk/client-s3"; import { fromCognitoIdentityPool } from "@aws-sdk/credential-providers"; const client = new S3Client({ // The AWS Region where the Amazon Simple Storage Service (Amazon S3) bucket will be created. Replace this with your Region. region: "us-east-1", credentials: fromCognitoIdentityPool({ // Replace the value of 'identityPoolId' with the ID of an Amazon Cognito identity pool in your Amazon Cognito Region. identityPoolId: "us-east-1:edbe2c04-7f5d-469b-85e5-98096bd75492", // Replace the value of 'region' with your Amazon Cognito Region. clientConfig: { region: "us-east-1" }, }), }); enum MessageType { SUCCESS = 0, FAILURE = 1, EMPTY = 2, } const App = () => { const [bucketName, setBucketName] = useState(""); const [msg, setMsg] = useState<{ message: string; type: MessageType }>({ message: "", type: MessageType.EMPTY, }); const createBucket = useCallback(async () => { setMsg({ message: "", type: MessageType.EMPTY }); try { await client.send(new CreateBucketCommand({ Bucket: bucketName })); setMsg({ message: `Bucket "${bucketName}" created.`, type: MessageType.SUCCESS, }); } catch (e) { console.error(e); setMsg({ message: e instanceof Error ? e.message : "Unknown error", type: MessageType.FAILURE, }); } }, [bucketName]); const deleteBucket = useCallback(async () => { setMsg({ message: "", type: MessageType.EMPTY }); try { await client.send(new DeleteBucketCommand({ Bucket: bucketName })); setMsg({ message: `Bucket "${bucketName}" deleted.`, type: MessageType.SUCCESS, }); } catch (e) { setMsg({ message: e instanceof Error ? e.message : "Unknown error", type: MessageType.FAILURE, }); } }, [bucketName]); return ( <View style={styles.container}> {msg.type !== MessageType.EMPTY && ( <Text style={ msg.type === MessageType.SUCCESS ? styles.successText : styles.failureText } > {msg.message} </Text> )} <View> <TextInput onChangeText={(text) => setBucketName(text)} autoCapitalize={"none"} value={bucketName} placeholder={"Enter Bucket Name"} /> <Button color="#68a0cf" title="Create Bucket" onPress={createBucket} /> <Button color="#68a0cf" title="Delete Bucket" onPress={deleteBucket} /> </View> </View> ); }; const styles = StyleSheet.create({ container: { flex: 1, alignItems: "center", justifyContent: "center", }, successText: { color: "green", }, failureText: { color: "red", }, }); export default App;

Kode pertama mengimpor dependensi React, React Native, dan AWS SDK yang diperlukan.

Di dalam fungsi Aplikasi:

  • Objek S3Client dibuat, menentukan kredensialnya menggunakan Amazon Cognito Identity Pool yang dibuat sebelumnya.

  • Metode createBucket dan deleteBucket membuat dan menghapus bucket yang ditentukan, masing-masing.

  • React Native View menampilkan kolom input teks bagi pengguna untuk menentukan nama bucket Amazon S3, dan tombol untuk membuat dan menghapus bucket Amazon S3 yang ditentukan.

JavaScript Halaman lengkap tersedia di sini GitHub.

Langkah 6: Jalankan Contoh

catatan

Ingatlah untuk masuk! Jika Anda menggunakan IAM Identity Center untuk mengautentikasi, ingatlah untuk masuk menggunakan perintah. AWS CLI aws sso login

Untuk menjalankan contoh, jalankan webios, atau android perintah menggunakan npm.

Berikut adalah contoh output dari menjalankan ios perintah di macOS.

$ npm run ios > ReactNativeApp@0.0.1 ios /Users/trivikr/workspace/ReactNativeApp > react-native run-ios info Found Xcode workspace "ReactNativeApp.xcworkspace" info Launching iPhone 11 (iOS 14.2) info Building (using "xcodebuild -workspace ReactNativeApp.xcworkspace -configuration Debug -scheme ReactNativeApp -destination id=706C1A97-FA38-407D-AD77-CB4FCA9134E9") success Successfully built the app info Installing "/Users/trivikr/Library/Developer/Xcode/DerivedData/ReactNativeApp-cfhmsyhptwflqqejyspdqgjestra/Build/Products/Debug-iphonesimulator/ReactNativeApp.app" info Launching "org.reactjs.native.example.ReactNativeApp" success Successfully launched the app on the simulator

Berikut adalah contoh output dari menjalankan android perintah di macOS.

$ npm run android > ReactNativeApp@0.0.1 android > react-native run-android info Running jetifier to migrate libraries to AndroidX. You can disable it using "--no-jetifier" flag. Jetifier found 970 file(s) to forward-jetify. Using 12 workers... info Starting JS server... info Launching emulator... info Successfully launched emulator. info Installing the app... > Task :app:stripDebugDebugSymbols UP-TO-DATE Compatible side by side NDK version was not found. > Task :app:installDebug 02:18:38 V/ddms: execute: running am get-config 02:18:38 V/ddms: execute 'am get-config' on 'emulator-5554' : EOF hit. Read: -1 02:18:38 V/ddms: execute: returning Installing APK 'app-debug.apk' on 'Pixel_3a_API_30_x86(AVD) - 11' for app:debug 02:18:38 D/app-debug.apk: Uploading app-debug.apk onto device 'emulator-5554' 02:18:38 D/Device: Uploading file onto device 'emulator-5554' 02:18:38 D/ddms: Reading file permission of /Users/trivikr/workspace/ReactNativeApp/android/app/build/outputs/apk/debug/app-debug.apk as: rw-r--r-- 02:18:40 V/ddms: execute: running pm install -r -t "/data/local/tmp/app-debug.apk" 02:18:41 V/ddms: execute 'pm install -r -t "/data/local/tmp/app-debug.apk"' on 'emulator-5554' : EOF hit. Read: -1 02:18:41 V/ddms: execute: returning 02:18:41 V/ddms: execute: running rm "/data/local/tmp/app-debug.apk" 02:18:41 V/ddms: execute 'rm "/data/local/tmp/app-debug.apk"' on 'emulator-5554' : EOF hit. Read: -1 02:18:41 V/ddms: execute: returning Installed on 1 device. Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0. Use '--warning-mode all' to show the individual deprecation warnings. See https://docs.gradle.org/6.2/userguide/command_line_interface.html#sec:command_line_warnings BUILD SUCCESSFUL in 6s 27 actionable tasks: 2 executed, 25 up-to-date info Connecting to the development server... 8081 info Starting the app on "emulator-5554"... Starting: Intent { cmp=com.reactnativeapp/.MainActivity }

Masukkan nama bucket yang ingin Anda buat atau hapus dan klik Create Bucket atau Delete Bucket. Perintah masing-masing akan dikirim ke Amazon S3, dan pesan sukses atau kesalahan akan ditampilkan.

Kemungkinan Peningkatan

Berikut adalah variasi pada aplikasi ini yang dapat Anda gunakan untuk mengeksplorasi lebih lanjut menggunakan SDK untuk JavaScript dalam aplikasi React Native.

  • Tambahkan tombol untuk mencantumkan bucket Amazon S3, dan berikan tombol hapus di samping setiap bucket yang terdaftar.

  • Tambahkan tombol untuk menempatkan objek teks ke dalam ember.

  • Integrasikan penyedia identitas eksternal seperti Facebook atau Amazon untuk digunakan dengan peran IAM yang diautentikasi.