web-dev-qa-db-fra.com

Comment définir les informations d'identification sur AWS SDK sur NET Core?

Je suis nouveau sur le SDK AWS et j'essaie de suivre l'AWS documentation , mais je ne donne pas grand-chose sur ce que je dois exactement configurer.

Les documents officiels me disent d'ajouter ceci à appsettings.json:

{
  "AWS": {
    "Profile": "local-test-profile",
    "Region": "us-west-2"
  }
}

Et puis créez le client:

var options = Configuration.GetAWSOptions();
IAmazonS3 client = options.CreateServiceClient<IAmazonS3>();

Cela provoque une exception levée disant qu'il ne peut pas trouver les informations d'identification. Où dois-je mettre l'ID et la clé Api? Quel est ce profil?

S'il vous plaît, gardez à l'esprit que je n'ai aucune préférence sur la façon de configurer cela. J'essaie simplement de suivre la documentation officielle de .NET Core, et leur seul exemple ne fonctionne pas. Les documents semblent impliquer que je devrais avoir une connaissance préalable de bon nombre de leurs termes et paramètres ou que je migre une application existante et que j'ai déjà tout configuré.

Quelqu'un peut-il me signaler ce qui manque dans cet exemple pour que l'API se connecte correctement à AWS?

25
Natan

Le fichier json est $ "appsettings. {Env.EnvironmentName} .json", vous devez donc l'appeler appsettings.Development.json et avoir la variable d'environnement définie.

Avez-vous défini votre profil "profil de test local" dans le fichier d'informations d'identification AWS.

Doit être dans C:\Users\{USERNAME} \. Aws\credentials

[local-test-profile]
aws_access_key_id = your_access_key_id
aws_secret_access_key = your_secret_access_key

Si vous ne le souhaitez pas à l'emplacement par défaut, vous pouvez définir le fichier de configuration json 'ProfilesLocation'.

14
JAZ

C'est peut-être trop tard pour vous, mais si vous utilisez Docker ou si vous avez un autre environnement/configuration où il n'est pas possible/facile d'utiliser des profils AWS, vous pouvez toujours utiliser les variables d'environnement. Par exemple:

var awsOptions = Configuration.GetAWSOptions();
awsOptions.Credentials = new EnvironmentVariablesAWSCredentials();
services.AddDefaultAWSOptions(awsOptions);
services.AddAWSService<IAmazonS3>();

Définissez ensuite AWS_ACCESS_KEY_ID & AWS_SECRET_ACCESS_KEY & AWS_REGION dans votre environnement.

Il semble qu'Amazon ait rendu cela plus difficile à trouver dans les documents qu'il ne devrait l'être.

L'exécution dans AWS for reals est correcte car vous devez utiliser un rôle, mais si votre utilisation de docker pour dev, la configuration d'un profil dans le conteneur est un PITA.

19
Jonesie

La même documentation comprend également une section pour la configuration des informations d'identification. Vérifiez-le ici http://docs.aws.Amazon.com/sdk-for-net/v3/developer-guide/net-dg-config-creds.html

Il ne donne pas d'exemple de configuration des informations d'identification à l'aide du fichier appSettings.json car ils ne pensent pas que ce soit la bonne façon (sécurisée) de le faire.

Voici la partie d'introduction de la section sur la configuration des informations d'identification:

Ne placez pas de clés d'accès littérales dans votre application, y compris le fichier App.config ou Web.config du projet. Si vous le faites, vous créez un risque d'exposer accidentellement vos informations d'identification si, par exemple, vous téléchargez le projet dans un référentiel public.

0
Hasan