Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Effettuare richieste utilizzando Account AWS o credenziali utente IAM
Puoi utilizzare le tue credenziali di sicurezza Account AWS o quelle degli utenti IAM per inviare richieste autenticate ad Amazon S3. Questa sezione fornisce esempi di come inviare richieste autenticate utilizzando i AWS SDK per Java tasti, e. AWS SDK per .NET AWS SDK per PHP Per un elenco degli AWS SDK disponibili, vai a Sample Code and Libraries.
Ciascuno di questi AWS SDK utilizza una catena di fornitori di SDK-specific credenziali per trovare e utilizzare le credenziali ed eseguire azioni per conto del proprietario delle credenziali. Ciò che accomuna tutte queste catene di fornitori di credenziali è che cercano tutte il tuo file di credenziali locale. AWS
Per ulteriori informazioni, consulta gli argomenti riportati di seguito.
Per creare un locale AWS file delle credenziali
Il modo più semplice per configurare le credenziali per i tuoi AWS SDK è utilizzare un AWS file di credenziali. Se usi AWS Command Line Interface (AWS CLI), potresti avere già configurato un file di AWS credenziali locale. Altrimenti, per impostare un file delle credenziali, attenersi alla procedura riportata di seguito.
Accedi Console di gestione AWS e apri la console IAM all'indirizzo https://console.aws.amazon.com/iam/.
-
Creare un nuovo utente con autorizzazioni limitate ai servizi e alle operazioni a cui si desidera che il codice abbia accesso. Per ulteriori informazioni sulla creazione di un nuovo utente, consulta Creazione di utenti IAM (Console) e segui le istruzioni descritte fino al passaggio 8.
-
Scegliere Scarica .csv per salvare una copia locale delle credenziali AWS
.
-
Sul computer, accedere alla directory principale e creare una directory .aws. Su Unix-based sistemi come Linux o OS X, si trova nella seguente posizione:
~/.aws
In Windows, si trova nella seguente posizione:
%HOMEPATH%\.aws
-
Nella directory .aws creare un nuovo file denominato credentials.
-
Aprire il file delle credenziali .csv scaricato dalla console IAM e copiarne il contenuto nel file credentials utilizzando il seguente formato:
[default]
aws_access_key_id = your_access_key_id
aws_secret_access_key = your_secret_access_key
-
Salvare il file credentials ed eliminare il file .csv scaricato al passaggio 3.
Il file delle credenziali condivise è ora configurato sul computer locale ed è pronto per essere utilizzato con gli AWS SDK.
Invio di richieste autenticate utilizzando AWS SDK
Usa gli AWS SDK per inviare richieste autenticate. Per ulteriori informazioni sull'invio di richieste autenticate, consulta Credenziali di sicurezza AWS o Autenticazione IAM Identity Center.
- Java
-
Per informazioni sull'autenticazione delle richieste tramite l' AWS SDK per Java, vedi Utilizzo di file di configurazione e credenziali condivisi per configurare globalmente SDK e strumenti e Autenticazione e accesso tramite AWS SDK e strumenti nella Guida di riferimento per AWS SDK e strumenti. AWS
- .NET
-
Per inviare richieste autenticate utilizzando le tue credenziali utente o IAM: Account AWS
-
Crea un'istanza della classe AmazonS3Client.
-
Eseguire uno dei metodi AmazonS3Client per inviare le richieste ad Amazon S3. Il client genera la firma necessaria dalle credenziali fornite e la include nella richiesta inviata ad Amazon S3.
Per ulteriori informazioni, consulta Effettuare richieste utilizzando le credenziali AWS dell'account o dell'utente IAM >.
È possibile creare il client AmazonS3Client senza specificare le credenziali di sicurezza. Le richieste inviate mediante questo client sono anonime e senza firma. Amazon S3 restituisce un errore se si inviano richieste anonime per una risorsa non disponibile pubblicamente.
Puoi creare Account AWS e creare gli utenti richiesti. È inoltre possibile gestire le credenziali per tali utenti. Queste credenziali sono necessarie per eseguire l'attività nell'esempio seguente. Per ulteriori informazioni, consulta Configurazione delle credenziali di AWS nella Guida per gli sviluppatori di SDK per .NET .
È quindi possibile configurare l'applicazione per recuperare attivamente profili e credenziali e quindi utilizzare esplicitamente tali credenziali durante la creazione di un client di servizio. AWS Per ulteriori informazioni, consulta Accesso a credenziali e profili in un'applicazione nella Guida per gli sviluppatori di SDK per .NET .
L'esempio seguente di codice C# mostra come eseguire le precedenti operazioni. Per informazioni sulla configurazione e l'esecuzione degli esempi di codice, consulta Getting Started with the AWS SDK for .NET nella SDK for .NET AWS Developer Guide.
Esempio
using Amazon;
using Amazon.S3;
using Amazon.S3.Model;
using System;
using System.Threading.Tasks;
namespace Amazon.DocSamples.S3
{
class MakeS3RequestTest
{
private const string bucketName = "*** bucket name ***";
// Specify your bucket region (an example region is shown).
private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2;
private static IAmazonS3 client;
public static void Main()
{
using (client = new AmazonS3Client(bucketRegion))
{
Console.WriteLine("Listing objects stored in a bucket");
ListingObjectsAsync().Wait();
}
}
static async Task ListingObjectsAsync()
{
try
{
ListObjectsRequest request = new ListObjectsRequest
{
BucketName = bucketName,
MaxKeys = 2
};
do
{
ListObjectsResponse response = await client.ListObjectsAsync(request);
// Process the response.
foreach (S3Object entry in response.S3Objects)
{
Console.WriteLine("key = {0} size = {1}",
entry.Key, entry.Size);
}
// If the response is truncated, set the marker to get the next
// set of keys.
if (response.IsTruncated)
{
request.Marker = response.NextMarker;
}
else
{
request = null;
}
} while (request != null);
}
catch (AmazonS3Exception e)
{
Console.WriteLine("Error encountered on server. Message:'{0}' when writing an object", e.Message);
}
catch (Exception e)
{
Console.WriteLine("Unknown encountered on server. Message:'{0}' when writing an object", e.Message);
}
}
}
}
- PHP
-
Questa sezione spiega come utilizzare una classe della versione 3 per inviare richieste autenticate utilizzando AWS SDK per PHP le tue credenziali Account AWS o quelle dell'utente IAM. Per ulteriori informazioni sull'API AWS SDK for Ruby, vai a AWS SDK for Ruby - Version 2.
Il seguente esempio di codice PHP mostra come il client esegue una richiesta utilizzando le credenziali di sicurezza per elencare tutti i bucket per l'account.
Esempio
require 'vendor/autoload.php';
use Aws\S3\Exception\S3Exception;
use Aws\S3\S3Client;
$bucket = '*** Your Bucket Name ***';
$s3 = new S3Client([
'region' => 'us-east-1',
'version' => 'latest',
]);
// Retrieve the list of buckets.
$result = $s3->listBuckets();
try {
// Retrieve a paginator for listing objects.
$objects = $s3->getPaginator('ListObjects', [
'Bucket' => $bucket
]);
echo "Keys retrieved!" . PHP_EOL;
// Print the list of objects to the page.
foreach ($objects as $object) {
echo $object['Key'] . PHP_EOL;
}
} catch (S3Exception $e) {
echo $e->getMessage() . PHP_EOL;
}
È possibile creare il client S3Client senza specificare le credenziali di sicurezza. Le richieste inviate mediante questo client sono anonime e senza firma. Amazon S3 restituisce un errore se si inviano richieste anonime per una risorsa non disponibile pubblicamente. Per ulteriori informazioni, vedere Creazione di client anonimi nella Documentazione di AWS SDK per PHP.
- Ruby
-
Prima di poter utilizzare la versione 3 dell'SDK AWS SDK per Ruby per effettuare chiamate ad Amazon S3, devi impostare le credenziali di AWS
accesso utilizzate dall'SDK per verificare l'accesso ai tuoi bucket e oggetti. Se hai delle credenziali condivise impostate nel profilo delle AWS credenziali sul tuo sistema locale, la versione 3 dell'SDK per Ruby può utilizzare tali credenziali senza che tu debba dichiararle nel codice. Per ulteriori informazioni sulla configurazione delle credenziali condivise, consulta Effettuare richieste utilizzando le credenziali dell'account o dell'utente IAM. AWS
Il seguente frammento di codice Ruby utilizza le credenziali in un file di AWS credenziali condiviso su un computer locale per autenticare una richiesta e ottenere tutti i nomi delle chiavi degli oggetti in un bucket specifico. Esegue queste operazioni:
-
Crea un'istanza della classe Aws::S3::Client.
-
Effettua una richiesta ad Amazon S3 enumerando gli oggetti in un bucket utilizzando il metodo list_objects_v2 di Aws::S3::Client. Il client genera il valore di firma necessario dalle credenziali contenute nel file delle AWS credenziali sul computer e lo include nella richiesta che invia ad Amazon S3.
-
Stampa la serie di nomi chiave degli oggetti al terminale.
Esempio
# Prerequisites:
# - An existing Amazon S3 bucket.
require 'aws-sdk-s3'
# @param s3_client [Aws::S3::Client] An initialized Amazon S3 client.
# @param bucket_name [String] The bucket's name.
# @return [Boolean] true if all operations succeed; otherwise, false.
# @example
# s3_client = Aws::S3::Client.new(region: 'us-west-2')
# exit 1 unless list_bucket_objects?(s3_client, 'amzn-s3-demo-bucket')
def list_bucket_objects?(s3_client, bucket_name)
puts "Accessing the bucket named '#{bucket_name}'..."
objects = s3_client.list_objects_v2(
bucket: bucket_name,
max_keys: 50
)
if objects.count.positive?
puts 'The object keys in this bucket are (first 50 objects):'
objects.contents.each do |object|
puts object.key
end
else
puts 'No objects found in this bucket.'
end
true
rescue StandardError => e
puts "Error while accessing the bucket named '#{bucket_name}': #{e.message}"
false
end
# Example usage:
def run_me
region = 'us-west-2'
bucket_name = 'BUCKET_NAME'
s3_client = Aws::S3::Client.new(region: region)
exit 1 unless list_bucket_objects?(s3_client, bucket_name)
end
run_me if $PROGRAM_NAME == __FILE__
Se non disponi di un file di AWS credenziali locale, puoi comunque creare la Aws::S3::Client risorsa ed eseguire il codice su bucket e oggetti Amazon S3. Le richieste che vengono inviate utilizzando la versione 3 di SDK per Ruby sono richieste anonime, senza firma, per impostazione predefinita. Amazon S3 restituisce un errore se si inviano richieste anonime per una risorsa non disponibile pubblicamente.
Puoi utilizzare ed espandere il precedente snippet di codice per applicazioni SDK per Ruby, come nel seguente esempio, più complesso.
# Prerequisites:
# - An existing Amazon S3 bucket.
require 'aws-sdk-s3'
# @param s3_client [Aws::S3::Client] An initialized Amazon S3 client.
# @param bucket_name [String] The bucket's name.
# @return [Boolean] true if all operations succeed; otherwise, false.
# @example
# s3_client = Aws::S3::Client.new(region: 'us-west-2')
# exit 1 unless list_bucket_objects?(s3_client, 'amzn-s3-demo-bucket')
def list_bucket_objects?(s3_client, bucket_name)
puts "Accessing the bucket named '#{bucket_name}'..."
objects = s3_client.list_objects_v2(
bucket: bucket_name,
max_keys: 50
)
if objects.count.positive?
puts 'The object keys in this bucket are (first 50 objects):'
objects.contents.each do |object|
puts object.key
end
else
puts 'No objects found in this bucket.'
end
true
rescue StandardError => e
puts "Error while accessing the bucket named '#{bucket_name}': #{e.message}"
false
end
# Example usage:
def run_me
region = 'us-west-2'
bucket_name = 'BUCKET_NAME'
s3_client = Aws::S3::Client.new(region: region)
exit 1 unless list_bucket_objects?(s3_client, bucket_name)
end
run_me if $PROGRAM_NAME == __FILE__
- Go
-
Esempio
L'esempio seguente utilizza le AWS credenziali caricate automaticamente dall'SDK for Go dal file delle credenziali condivise.
package main
import (
"context"
"errors"
"fmt"
"github.com/aws/aws-sdk-go-v2/config"
"github.com/aws/aws-sdk-go-v2/service/s3"
"github.com/aws/smithy-go"
)
// main uses the AWS SDK for Go V2 to create an Amazon Simple Storage Service
// (Amazon S3) client and list up to 10 buckets in your account.
// This example uses the default settings specified in your shared credentials
// and config files.
func main() {
ctx := context.Background()
sdkConfig, err := config.LoadDefaultConfig(ctx)
if err != nil {
fmt.Println("Couldn't load default configuration. Have you set up your AWS account?")
fmt.Println(err)
return
}
s3Client := s3.NewFromConfig(sdkConfig)
count := 10
fmt.Printf("Let's list up to %v buckets for your account.\n", count)
result, err := s3Client.ListBuckets(ctx, &s3.ListBucketsInput{})
if err != nil {
var ae smithy.APIError
if errors.As(err, &ae) && ae.ErrorCode() == "AccessDenied" {
fmt.Println("You don't have permission to list buckets for this account.")
} else {
fmt.Printf("Couldn't list buckets for your account. Here's why: %v\n", err)
}
return
}
if len(result.Buckets) == 0 {
fmt.Println("You don't have any buckets!")
} else {
if count > len(result.Buckets) {
count = len(result.Buckets)
}
for _, bucket := range result.Buckets[:count] {
fmt.Printf("\t%v\n", *bucket.Name)
}
}
}