AWS Boto3 "kalit juftligi mavjud emas" xato yo'lni berayotganda xato

Quyidagi skriptni ishga tushiraman:

from __future__ import print_function

import paramiko
import boto3


#print('Loading function')

paramiko.util.log_to_file("/tmp/Dawny.log")

# List of EC2 variables
region = 'us-east-1'
image = 'ami-<>'
keyname = '<>.pem'

ec2 = boto3.resource('ec2')


instances = ec2.create_instances(ImageId=image, MinCount=1, MaxCount=1, InstanceType = 't2.micro', KeyName=keyname)

instance = instances[0]
instance.wait_until_running()

instance.load()

print(instance.public_dns_name)



def lambda_handler(event, context):
    instances = ec2.create_instances(ImageId=image, MinCount=1, MaxCount=1, InstanceType = 't2.micro', KeyName=keyname)

    instance = instances[0]
    instance.wait_until_running()

    instance.load()

    print(instance.public_dns_name)

Men uni ishga tushirganimda, men bu xatoni olaman:

botocore.exceptions.ClientError: An error occurred (InvalidKeyPair.NotFound) when calling the RunInstances operation: The key pair '<>.pem' does not exist

Even when I add the complete path to the key-pair, boto3 gives me the same error. Also, I tried this too: https://stackoverflow.com/a/34410564/4993513

Shunday bo'lsa-da, ishlamaydi.

2

9 javoblar

Bunday hollarda siz boshqa mintaqaga qarab turibsiz. Ehtimol standartni region da yaratmoqchisiz, lekin keypair us-east-1 mavjud.

Sinash:

ec2 = boto3.resource('ec2', region_name=region)
1
qo'shib qo'ydi

Bunday hollarda siz boshqa mintaqaga qarab turibsiz. Ehtimol standartni region da yaratmoqchisiz, lekin keypair us-east-1 mavjud.

Sinash:

ec2 = boto3.resource('ec2', region_name=region)
1
qo'shib qo'ydi

Bunday hollarda siz boshqa mintaqaga qarab turibsiz. Ehtimol standartni region da yaratmoqchisiz, lekin keypair us-east-1 mavjud.

Sinash:

ec2 = boto3.resource('ec2', region_name=region)
1
qo'shib qo'ydi

create_instances() KeyName argumenti AWS da yaratishda KeyPairga berilgan nomga ishora qiladi.

Odatda " KeyName .pem" nomi bo'ladi. .pem kengaytmasdan satrni o'tkazing. create_instances() KeyName argumenti faqat haqiqiy kalit faylini emas, balki Keypairning nomini kutadi.

For example:
If the key file is myinstance.pem, then the KeyName would be myinstance unless the keyfile has been renamed. You will be able to view all the KeyPairs owned by you from the console (can be listed with cli and api too).

1
qo'shib qo'ydi
@franklinsijo Men KeyPairga egaman. Shunga qaramay, men bu xatoni oldim. Bundan tashqari, KeyName xususiyati bo'lmagan misolni yaratganimda, u bitta yaratadi. Ammo, buni EC2 boshqaruv panelida topa olmayapman: /. [Shuningdek, kirish va maxfiy kirish kalitlarini o'zaro tekshirib ko'ramdim]
qo'shib qo'ydi muallif Dawny33, manba
Faqat tushuntirish uchun ... Bu buyruq diske ega bo'lgan keypairga kirishga hojat yo'q. Buning o'rniga, key2 nomini EC2 ga yuboradi va keyin EC2 allaqachon AWS-da saqlangan nomlangan kalit panelga kirishadi va bu misolni ishga tushirishda ishlatiladi.
qo'shib qo'ydi muallif John Rotenstein, manba
Argumentni .pem kengaytmasi holda o'tkazing.
qo'shib qo'ydi muallif franklinsijo, manba

create_instances() KeyName argumenti AWS da yaratishda KeyPairga berilgan nomga ishora qiladi.

Odatda " KeyName .pem" nomi bo'ladi. .pem kengaytmasdan satrni o'tkazing. create_instances() KeyName argumenti faqat haqiqiy kalit faylini emas, balki Keypairning nomini kutadi.

For example:
If the key file is myinstance.pem, then the KeyName would be myinstance unless the keyfile has been renamed. You will be able to view all the KeyPairs owned by you from the console (can be listed with cli and api too).

1
qo'shib qo'ydi
@franklinsijo Men KeyPairga egaman. Shunga qaramay, men bu xatoni oldim. Bundan tashqari, KeyName xususiyati bo'lmagan misolni yaratganimda, u bitta yaratadi. Ammo, buni EC2 boshqaruv panelida topa olmayapman: /. [Shuningdek, kirish va maxfiy kirish kalitlarini o'zaro tekshirib ko'ramdim]
qo'shib qo'ydi muallif Dawny33, manba
Faqat tushuntirish uchun ... Bu buyruq diske ega bo'lgan keypairga kirishga hojat yo'q. Buning o'rniga, key2 nomini EC2 ga yuboradi va keyin EC2 allaqachon AWS-da saqlangan nomlangan kalit panelga kirishadi va bu misolni ishga tushirishda ishlatiladi.
qo'shib qo'ydi muallif John Rotenstein, manba
Argumentni .pem kengaytmasi holda o'tkazing.
qo'shib qo'ydi muallif franklinsijo, manba

create_instances() KeyName argumenti AWS da yaratishda KeyPairga berilgan nomga ishora qiladi.

Odatda " KeyName .pem" nomi bo'ladi. .pem kengaytmasdan satrni o'tkazing. create_instances() KeyName argumenti faqat haqiqiy kalit faylini emas, balki Keypairning nomini kutadi.

For example:
If the key file is myinstance.pem, then the KeyName would be myinstance unless the keyfile has been renamed. You will be able to view all the KeyPairs owned by you from the console (can be listed with cli and api too).

1
qo'shib qo'ydi
@franklinsijo Men KeyPairga egaman. Shunga qaramay, men bu xatoni oldim. Bundan tashqari, KeyName xususiyati bo'lmagan misolni yaratganimda, u bitta yaratadi. Ammo, buni EC2 boshqaruv panelida topa olmayapman: /. [Shuningdek, kirish va maxfiy kirish kalitlarini o'zaro tekshirib ko'ramdim]
qo'shib qo'ydi muallif Dawny33, manba
Faqat tushuntirish uchun ... Bu buyruq diske ega bo'lgan keypairga kirishga hojat yo'q. Buning o'rniga, key2 nomini EC2 ga yuboradi va keyin EC2 allaqachon AWS-da saqlangan nomlangan kalit panelga kirishadi va bu misolni ishga tushirishda ishlatiladi.
qo'shib qo'ydi muallif John Rotenstein, manba
Argumentni .pem kengaytmasi holda o'tkazing.
qo'shib qo'ydi muallif franklinsijo, manba

AWS EC2-dagi "KeyPair" ni tushuntirib bering. Odatda, odamlar AWS sizga maxsus kalitni beradigan va ochiq kalitni AWS-dagi kalit omboringizga saqlaydigan kalitlarni yaratish uchun konsoldan foydalanadi.

Agar EC2 instansiyasini ishga tushirilsa, jarayon EC2 protokoli ichida joylashgan umumiy kalitni ko'chirib oladi va uni o'rnak OSga joylashtiradi. (masalan, ~/.ssh/authorized_keys)

Siz o'zingizning "on-the-fly" kalitini ishlata olmaysiz, boshlovchi sizni tanlamaydi (sabab keyinroq ko'rsatiladi). Agar siz o'z kalitingizni ishlatmoqchi bo'lsangiz, birinchi navbatda umumiy kalitingizni repo ichiga kiritishingiz va unga EC2 uchun foydalanadigan nom berishingiz kerak.

Ec2 Keypair ga tegishli bo'lishi kerak. Quyidagi kabi AWS standartlariga muvofiqligi:

  • OpenSSH public key format (the format in ~/.ssh/authorized_keys)
  • Base64 encoded DER format SSH public key file format as specified in
  • RFC4716 Amazon EC2 does not accept DSA keys. Make sure your key generator is set up to create RSA keys.

Supported lengths: 1024, 2048, and 4096.

Agar umumiy kalitingizni EC2 keypair repo-ga import qila olmasangiz, siz mos keladigan yangi ma'lumotni yaratishingiz kerak. Kalitni muvaffaqiyatli import qilgandan keyingina, keypad yordamida misolni ishga tushirishingiz mumkin.

Bundan tashqari, siz o'z kalitingizni import qilishni avtomatlashtirishni istasangiz, ec2.client.import_key_pair() amalga oshirish uchun.

0
qo'shib qo'ydi

AWS EC2-dagi "KeyPair" ni tushuntirib bering. Odatda, odamlar AWS sizga maxsus kalitni beradigan va ochiq kalitni AWS-dagi kalit omboringizga saqlaydigan kalitlarni yaratish uchun konsoldan foydalanadi.

Agar EC2 instansiyasini ishga tushirilsa, jarayon EC2 protokoli ichida joylashgan umumiy kalitni ko'chirib oladi va uni o'rnak OSga joylashtiradi. (masalan, ~/.ssh/authorized_keys)

Siz o'zingizning "on-the-fly" kalitini ishlata olmaysiz, boshlovchi sizni tanlamaydi (sabab keyinroq ko'rsatiladi). Agar siz o'z kalitingizni ishlatmoqchi bo'lsangiz, birinchi navbatda umumiy kalitingizni repo ichiga kiritishingiz va unga EC2 uchun foydalanadigan nom berishingiz kerak.

Ec2 Keypair ga tegishli bo'lishi kerak. Quyidagi kabi AWS standartlariga muvofiqligi:

  • OpenSSH public key format (the format in ~/.ssh/authorized_keys)
  • Base64 encoded DER format SSH public key file format as specified in
  • RFC4716 Amazon EC2 does not accept DSA keys. Make sure your key generator is set up to create RSA keys.

Supported lengths: 1024, 2048, and 4096.

Agar umumiy kalitingizni EC2 keypair repo-ga import qila olmasangiz, siz mos keladigan yangi ma'lumotni yaratishingiz kerak. Kalitni muvaffaqiyatli import qilgandan keyingina, keypad yordamida misolni ishga tushirishingiz mumkin.

Bundan tashqari, siz o'z kalitingizni import qilishni avtomatlashtirishni istasangiz, ec2.client.import_key_pair() amalga oshirish uchun.

0
qo'shib qo'ydi

AWS EC2-dagi "KeyPair" ni tushuntirib bering. Odatda, odamlar AWS sizga maxsus kalitni beradigan va ochiq kalitni AWS-dagi kalit omboringizga saqlaydigan kalitlarni yaratish uchun konsoldan foydalanadi.

Agar EC2 instansiyasini ishga tushirilsa, jarayon EC2 protokoli ichida joylashgan umumiy kalitni ko'chirib oladi va uni o'rnak OSga joylashtiradi. (masalan, ~/.ssh/authorized_keys)

Siz o'zingizning "on-the-fly" kalitini ishlata olmaysiz, boshlovchi sizni tanlamaydi (sabab keyinroq ko'rsatiladi). Agar siz o'z kalitingizni ishlatmoqchi bo'lsangiz, birinchi navbatda umumiy kalitingizni repo ichiga kiritishingiz va unga EC2 uchun foydalanadigan nom berishingiz kerak.

Ec2 Keypair ga tegishli bo'lishi kerak. Quyidagi kabi AWS standartlariga muvofiqligi:

  • OpenSSH public key format (the format in ~/.ssh/authorized_keys)
  • Base64 encoded DER format SSH public key file format as specified in
  • RFC4716 Amazon EC2 does not accept DSA keys. Make sure your key generator is set up to create RSA keys.

Supported lengths: 1024, 2048, and 4096.

Agar umumiy kalitingizni EC2 keypair repo-ga import qila olmasangiz, siz mos keladigan yangi ma'lumotni yaratishingiz kerak. Kalitni muvaffaqiyatli import qilgandan keyingina, keypad yordamida misolni ishga tushirishingiz mumkin.

Bundan tashqari, siz o'z kalitingizni import qilishni avtomatlashtirishni istasangiz, ec2.client.import_key_pair() amalga oshirish uchun.

0
qo'shib qo'ydi