Technical explorations and explanations
How to
You’ll need
I chose these ingredients, you should substitute according to your tastes
root user to create a user group and user with access to BedrockAmazon Bedrock Workshop
Amazon Bedrock user guide
Documents and user guides
AWS documents, products, features and processes change.
1 Amazon Web Services
bedrock2 Development machine
3 Bedrock commands in the AWS CLI
4 Bedrock command in Python
boto35 Tear down
Assuming you only have a root user account, set up a new user group and user with appropriate permissions
Log in as the AWS root user in one of the regions recommended by the AWS workshop
IAM > Groups
Click ‘Create group’
bedrock-usersAmazonBedrockLimitedAccessClick ‘Create user group’
Log out
Generate and record a strong password
W(@yX;REDACTED;?x28xe4
Log in as the AWS root user
IAM > Users
Click ‘Create user’
bedrockYesW(@yX;REDACTED;?x28xe4NoClick ‘Next’
Add user to groupbedrock-usersClick ‘Next’
Click ‘Create user’
Record the authentication URL: https://000000000000.signin.aws.amazon.com/console
Click ‘Return to users list’
A warning about not viewing the password is shown
Click ‘Continue’
Log out
bedrockLog in as the AWS root user
IAM > Users > bedrock
Click ‘Create access key’
Command line interface (CLI)Confirmation: Yes
Click ‘Next’
bedrock-aws-cliClick Create access key
Record the access key and secret access key values
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAus-east-1Click ‘Done’
A warning is shown: Continue without viewing or downloading
Click ‘Continue’
Log out
bedrockLog in as the bedrock user
bedrockW(@yX;REDACTED;?x28xe4Amazon Bedrock > API keys
Make sure you’re logged in with the bedrock account, as API keys inherit the permissions of the current user
Click ‘Generate short-term API keys’
The key value is much, much longer than the text area it’s displayed in :
bedrock-api-key-YmVkcm9jay5hbWF6b25hd3MuY29tLz9BY3Rpb249Q2FsbFdpdGhCZWFyZXJUb2tlbiZYLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFTSUFYSEJRSk9WTldOT1JRR0FCJTJGMjAyNTExMTElMkZ1cy1lYXN0LTElMkZiZWRyb2NrJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNTExMTFUMTQ1NTEyWiZYLUFtei1FeHBpcmVzPTQzMjAwJlgtQW16LVNlY3VyaXR5LVRva2VuPUlRb0piM0pwWjJsdVgyVmpFRmNhQ1hWekxXVmhjM1F0TVNKSE1FVUNJRk9NUFcycUFQOUpFNTdQUFFaekZrclFKR24xamV6UXViUEdzVURIU0Jzc0FpRUFoMmZrNnRTMGRlcXhmS3d4MjlwbGM0cVpSOG43MHYlMkJNSktxWnhRUk5mYThxdmdNSUlCQURHZ3cwT1RZeE56QXdNRFU0TlRFaUROeG5ydUM4cmxPNGQwSjZLQ3FiQTc2YW02cDN4SThjSkdReGJrT2VsNjBjMlIySHclMkZiNWZXNmFZYm0zU3Z6NzBIUnp2NlZXcGhnQlV1Q3JlNmglMkJrWVpDRGtuNjdlQkJhJTJCQ3VSVVUyR1N0JTJCOXJ4dTV4endXWG5YVmZtZzZnYUEyenNSUmw0WlRXeDJCRkdnY0J5R0pmTWNzT0xacUglMkIycSUyQkYzdDAlMkJRTVpBNXU3NVY4R0x6dHJza0U4Sko3Qnc3JTJCbHd6VFE1VFZmeURoWEdkcSUyRnY0NjljUkVyd2Q3VUloWm5LN0RRVksxUmNsTW1uR1k2N2U4VyUyQndFMnRGViUyQjN0VFBFbFZ2MHdnZDVzdUNoNkdLcXFqV2hVOHJCdHp3RkVvb2ZlSFN5Y1dNMndZNkUwJTJCa0NlSzBaNFQ1QTkwQzFxYlEyZkdlYkkxdXd2RXlYZzdTdXdzeTFLd1VEUGRCb0lpM2NYVjY5dms2UXVuV2lqdkFjbWpKZkdMem1nZk13cWsyUG1LUGFIQmk3ekRMWm1mR3QlMkJ5TFVNRmFQbHdXaDc3VUhTT2RNYWxSV1JqODhtRzdiYWRyakxTbmc5c1R1aHZLOHpMNlZzZDVSNktlM2o1YTBXUXNFNkVtT3JhRFlFdFpnMlVia1k3TnBheUJnR1dYUktVcHdWSWRCcW0lMkZKJTJCSllCZiUyQnVVWVUlMkZxN1E5QXFBSTN1NEJma3RlJTJGaTlFcVlnZCUyQjR0QkYzVUFkUUVwdTE0WWhxNVM4MVhqRGttODNJQmpyZUF2dURUbFVBZDJ4VmRURVhBZ0Zyd29rTWlneGVnWXYyTnVjS0ROYVR3UWY1UlMlMkYzU0F0TTJCYUR5UHAlMkZqUTFoZXdBTTJId2s1Rjk1dHpRUCUyRjQzM2t3VzI3UFZRU2g3NGFCJTJCNmxzd244SWhzMkpCeVpYcko0R3V1d2JIRXJGbHZLaFZ4WFpvJTJCUUt3MWN6VElwbzFwMHRCSUlEaEc3OHpGVEdSVzBVWkVhUEtRQzI4UWZlaW1EJTJCd2ElMkJOZkclMkZadU1yRU02Y1JXNnhUMHkwc0dDUTdETjg0bXBocDk4bHhGVDVGV2tLNlFFYnNDakJMQ1g0MTRHaTFUMFNpb3ZTaG42amVxN0hEa1VDN0pJaHBJMzc5VyUyQnpNQUElMkZ1ZnNIMVp5cE9ObWsxOVRaJTJCSG04JTJGUDYydFoxV0MzTTlFcFVJMlJsVkJHWW9NV1hXaG5iWXB0cXFvQXRKNFgxc0NKN05CSEJ6NUpnNXRmZnp4WnozaFN2b2h1N05CZndZQlN1b2FHVDRsVmhaQ2NZU0Z5bFhHeDNxNCUyQklkczMzTGRQTkFOTGtUdCUyRm4lMkJTR2FqOGtWJTJGTUZ3bUdKb0hoR21lZTRlbHAwYkxTM2pVN1B3VWFIQXRaS2x6WjhHJlgtQW16LVNpZ25hdHVyZT1kYWIzODRlNTA1YjE4OGY1MGYyZGVkYmQ3OWU5MzU5MGM2Njg2NGJmZDFkYzkzZjY4ZDIwYTljYzJlZWEwZTJjJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZWZXJzaW9uPTE=
Click ‘Close’
Log out
To avoid installing and configuring on your actual laptop, start up a Google Cloud Platform Compute engine instance.
[you@laptop ~]$ cd credentials/cloud.google.com
[you@laptop cloud.google.com]$ ssh-keygen \
-t rsa \
-b 4096 \
-f bedrock \
-C $( whoami ) \
-N ''
Generating public/private rsa key pair.
Your identification has been saved in bedrock
Your public key has been saved in bedrock.pub
The key fingerprint is:
SHA256:8Hv/0/POJZzJe3W5E6WICpi2OBe+WnGOB0bfJ+JjSRc neil
The key's randomart image is:
+---[RSA 4096]----+
| |
| |
| . . E |
| . . + . .|
| +o= S .. . .o|
| .=O.+ +. .o.=o|
| +ooB.... *.*|
| o.+o ... . .B+|
| .+.. ..o+B|
+----[SHA256]-----+
[you@laptop cloud.google.com]$ cat bedrock.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDMnu+hlBB7ow29NfgnBRnTwdrC8XBwhKDIJPT55goCIVR6DzRM6V/zRquAnbm5bzge/7dIbnkHlTNPNFhRLGKOdgUrYUGwTLIiy5IXytjaHJrOYa2SuqrtirtmWWRcWT3CnY4H9gMQ2ZdtavK/td0CsVZZ7mbm02sBoDM245fT/l3410AxBAyYV5ANsdkb3p9EluSXaenneHk0b15H4+D7nYYYhgVqyp+uUaeuc+7vnbUqdBJh9/gsGmTRU1KA1SnhNBJco1uC9bbrOhGgsjTtbaGf78Fv6m32Mtobn3QRNjIbkD9Hbi0S10OJh1Wupq6ElzoDcdvxcBEYYulSKwftXWuGtRLEEGnAIa2ys+7/J6cTKAtXzVpyF3XX8TWKXKv1xgVC7gTcxvinZq+8Gs3kwDbRRgU9TWlw+fGRYMXzuUFmuHzFWTSO7eLV5BSdj42CKgrVTL1xNZiEjY9/BCrLaqocK5JsAGcPQz+IdomtVq5Buh4xam6OZR81QvHQ3TQpgWLLe54VFnALAkL1D3VZ+VbMS4S5khEQs7q7sqJgBlCjLdxok3f1AohbcxTq60W44iCqCAuTLJ6qHlt6IT1GQBTQwq8kW5EVXWXdnJV2/sltYVpD3fHBwaRQhb2PlZpyFIUJTuEss5zHrO2VU1o1p8+36PTuruVxG6FZDiCPnQ== neil
Google Cloud Platform > Compute Engine > Create an instance
bedrockus-east4 (Northern Virginia)us-east4-aGeneral purpose E2 e2-standard-4 (4 vCPU, 2 core, 16Gb memory)For reference, this costs about USD 0.15 per hour
CentOSCentOS Stream 10Balanced persistent disk20No backupsNo changes needed (1 default interface)
No changes needed
Manage access > Add manually generated SSH keys
No changes needed
Finally, click ‘Create’ and copy the external IP address when it’s available
Use the SSH key pair to authenticate your SSH session at the machine’s external IP address
[you@laptop cloud.google.com]$ BEDROCK_DEV=11.22.33.44
[you@laptop cloud.google.com]$ BEDROCK_KEY=bedrock
[you@laptop cloud.google.com]$ ssh -i ${BEDROCK_KEY} ${BEDROCK_DEV}
The authenticity of host '11.22.33.44 (11.22.33.44)' can't be established.
ED25519 key fingerprint is SHA256:9XTlpuHG5tSGwwjMn4ApnkN832CDeVlmm+OG7TMvk7M.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '11.22.33.44' (ED25519) to the list of known hosts.
[neil@bedrock ~]$
After making the API key available as an environment variable, make a request to the API and format the JSON response
((bedrock))[neil@bedrock ~]$ BEDROCK_API_KEY="bedrock-api-key-YmVkcm9jay5hbWF6b25hd3MuY29tLz9BY3Rpb249Q2FsbFdpdGhCZWFyZXJUb2tlbiZYLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFTSUFYSEJRSk9WTldOT1JRR0FCJTJGMjAyNTExMTElMkZ1cy1lYXN0LTElMkZiZWRyb2NrJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNTExMTFUMTQ1NTEyWiZYLUFtei1FeHBpcmVzPTQzMjAwJlgtQW16LVNlY3VyaXR5LVRva2VuPUlRb0piM0pwWjJsdVgyVmpFRmNhQ1hWekxXVmhjM1F0TVNKSE1FVUNJRk9NUFcycUFQOUpFNTdQUFFaekZrclFKR24xamV6UXViUEdzVURIU0Jzc0FpRUFoMmZrNnRTMGRlcXhmS3d4MjlwbGM0cVpSOG43MHYlMkJNSktxWnhRUk5mYThxdmdNSUlCQURHZ3cwT1RZeE56QXdNRFU0TlRFaUROeG5ydUM4cmxPNGQwSjZLQ3FiQTc2YW02cDN4SThjSkdReGJrT2VsNjBjMlIySHclMkZiNWZXNmFZYm0zU3Z6NzBIUnp2NlZXcGhnQlV1Q3JlNmglMkJrWVpDRGtuNjdlQkJhJTJCQ3VSVVUyR1N0JTJCOXJ4dTV4endXWG5YVmZtZzZnYUEyenNSUmw0WlRXeDJCRkdnY0J5R0pmTWNzT0xacUglMkIycSUyQkYzdDAlMkJRTVpBNXU3NVY4R0x6dHJza0U4Sko3Qnc3JTJCbHd6VFE1VFZmeURoWEdkcSUyRnY0NjljUkVyd2Q3VUloWm5LN0RRVksxUmNsTW1uR1k2N2U4VyUyQndFMnRGViUyQjN0VFBFbFZ2MHdnZDVzdUNoNkdLcXFqV2hVOHJCdHp3RkVvb2ZlSFN5Y1dNMndZNkUwJTJCa0NlSzBaNFQ1QTkwQzFxYlEyZkdlYkkxdXd2RXlYZzdTdXdzeTFLd1VEUGRCb0lpM2NYVjY5dms2UXVuV2lqdkFjbWpKZkdMem1nZk13cWsyUG1LUGFIQmk3ekRMWm1mR3QlMkJ5TFVNRmFQbHdXaDc3VUhTT2RNYWxSV1JqODhtRzdiYWRyakxTbmc5c1R1aHZLOHpMNlZzZDVSNktlM2o1YTBXUXNFNkVtT3JhRFlFdFpnMlVia1k3TnBheUJnR1dYUktVcHdWSWRCcW0lMkZKJTJCSllCZiUyQnVVWVUlMkZxN1E5QXFBSTN1NEJma3RlJTJGaTlFcVlnZCUyQjR0QkYzVUFkUUVwdTE0WWhxNVM4MVhqRGttODNJQmpyZUF2dURUbFVBZDJ4VmRURVhBZ0Zyd29rTWlneGVnWXYyTnVjS0ROYVR3UWY1UlMlMkYzU0F0TTJCYUR5UHAlMkZqUTFoZXdBTTJId2s1Rjk1dHpRUCUyRjQzM2t3VzI3UFZRU2g3NGFCJTJCNmxzd244SWhzMkpCeVpYcko0R3V1d2JIRXJGbHZLaFZ4WFpvJTJCUUt3MWN6VElwbzFwMHRCSUlEaEc3OHpGVEdSVzBVWkVhUEtRQzI4UWZlaW1EJTJCd2ElMkJOZkclMkZadU1yRU02Y1JXNnhUMHkwc0dDUTdETjg0bXBocDk4bHhGVDVGV2tLNlFFYnNDakJMQ1g0MTRHaTFUMFNpb3ZTaG42amVxN0hEa1VDN0pJaHBJMzc5VyUyQnpNQUElMkZ1ZnNIMVp5cE9ObWsxOVRaJTJCSG04JTJGUDYydFoxV0MzTTlFcFVJMlJsVkJHWW9NV1hXaG5iWXB0cXFvQXRKNFgxc0NKN05CSEJ6NUpnNXRmZnp4WnozaFN2b2h1N05CZndZQlN1b2FHVDRsVmhaQ2NZU0Z5bFhHeDNxNCUyQklkczMzTGRQTkFOTGtUdCUyRm4lMkJTR2FqOGtWJTJGTUZ3bUdKb0hoR21lZTRlbHAwYkxTM2pVN1B3VWFIQXRaS2x6WjhHJlgtQW16LVNpZ25hdHVyZT1kYWIzODRlNTA1YjE4OGY1MGYyZGVkYmQ3OWU5MzU5MGM2Njg2NGJmZDFkYzkzZjY4ZDIwYTljYzJlZWEwZTJjJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZWZXJzaW9uPTE="
((bedrock))[neil@bedrock ~]$ curl -X POST "https://bedrock-runtime.us-east-1.amazonaws.com/model/us.anthropic.claude-3-5-haiku-20241022-v1:0/converse" \
--silent \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${BEDROCK_API_KEY}" \
-d '{ "messages": [ { "role": "user", "content": [ { "text": "Hello" } ] } ] }' \
| python -mjson.tool
Sometimes it works … but be ready to receive a message about model use case details. Either way, we’ll be using foundation models from other providers for the moment.
{
"metrics": {
"latencyMs": 1072
},
"output": {
"message": {
"content": [
{
"text": "Hi there! How are you doing today? Is there anything I can help you with?"
}
],
"role": "assistant"
}
},
"stopReason": "end_turn",
"usage": {
"cacheReadInputTokenCount": 0,
"cacheReadInputTokens": 0,
"cacheWriteInputTokenCount": 0,
"cacheWriteInputTokens": 0,
"inputTokens": 8,
"outputTokens": 21,
"serverToolUsage": {},
"totalTokens": 29
}
}
The message about model use case details looks like this
{
"message": "Model use case details have not been submitted for this account. Fill out the Anthropic use case details form before using the model. If you have already filled out the form, try again in 15 minutes."
}
Also, for your convenience
Confirm that your Python meets the requirements
[neil@bedrock ~]$ python --version
Python 3.12.11
To use Pip, create and start a Python virtual environment
[neil@bedrock ~]$ python -m venv bedrock
[neil@bedrock ~]$ source bedrock/bin/activate
((bedrock))[neil@bedrock ~]$
((bedrock))[neil@bedrock ~]$ sudo dnf -y install unzip
Create a public key file to verify the downloaded application
((bedrock))[neil@bedrock ~]$ cat << EOF > awscli-exe-linux-x86_64.zip.pub
-----BEGIN PGP PUBLIC KEY BLOCK-----
mQINBF2Cr7UBEADJZHcgusOJl7ENSyumXh85z0TRV0xJorM2B/JL0kHOyigQluUG
ZMLhENaG0bYatdrKP+3H91lvK050pXwnO/R7fB/FSTouki4ciIx5OuLlnJZIxSzx
PqGl0mkxImLNbGWoi6Lto0LYxqHN2iQtzlwTVmq9733zd3XfcXrZ3+LblHAgEt5G
TfNxEKJ8soPLyWmwDH6HWCnjZ/aIQRBTIQ05uVeEoYxSh6wOai7ss/KveoSNBbYz
gbdzoqI2Y8cgH2nbfgp3DSasaLZEdCSsIsK1u05CinE7k2qZ7KgKAUIcT/cR/grk
C6VwsnDU0OUCideXcQ8WeHutqvgZH1JgKDbznoIzeQHJD238GEu+eKhRHcz8/jeG
94zkcgJOz3KbZGYMiTh277Fvj9zzvZsbMBCedV1BTg3TqgvdX4bdkhf5cH+7NtWO
lrFj6UwAsGukBTAOxC0l/dnSmZhJ7Z1KmEWilro/gOrjtOxqRQutlIqG22TaqoPG
fYVN+en3Zwbt97kcgZDwqbuykNt64oZWc4XKCa3mprEGC3IbJTBFqglXmZ7l9ywG
EEUJYOlb2XrSuPWml39beWdKM8kzr1OjnlOm6+lpTRCBfo0wa9F8YZRhHPAkwKkX
XDeOGpWRj4ohOx0d2GWkyV5xyN14p2tQOCdOODmz80yUTgRpPVQUtOEhXQARAQAB
tCFBV1MgQ0xJIFRlYW0gPGF3cy1jbGlAYW1hem9uLmNvbT6JAlQEEwEIAD4CGwMF
CwkIBwIGFQoJCAsCBBYCAwECHgECF4AWIQT7Xbd/1cEYuAURraimMQrMRnJHXAUC
aGveYQUJDMpiLAAKCRCmMQrMRnJHXKBYD/9Ab0qQdGiO5hObchG8xh8Rpb4Mjyf6
0JrVo6m8GNjNj6BHkSc8fuTQJ/FaEhaQxj3pjZ3GXPrXjIIVChmICLlFuRXYzrXc
Pw0lniybypsZEVai5kO0tCNBCCFuMN9RsmmRG8mf7lC4FSTbUDmxG/QlYK+0IV/l
uJkzxWa+rySkdpm0JdqumjegNRgObdXHAQDWlubWQHWyZyIQ2B4U7AxqSpcdJp6I
S4Zds4wVLd1WE5pquYQ8vS2cNlDm4QNg8wTj58e3lKN47hXHMIb6CHxRnb947oJa
pg189LLPR5koh+EorNkA1wu5mAJtJvy5YMsppy2y/kIjp3lyY6AmPT1posgGk70Z
CmToEZ5rbd7ARExtlh76A0cabMDFlEHDIK8RNUOSRr7L64+KxOUegKBfQHb9dADY
qqiKqpCbKgvtWlds909Ms74JBgr2KwZCSY1HaOxnIr4CY43QRqAq5YHOay/mU+6w
hhmdF18vpyK0vfkvvGresWtSXbag7Hkt3XjaEw76BzxQH21EBDqU8WJVjHgU6ru+
DJTs+SxgJbaT3hb/vyjlw0lK+hFfhWKRwgOXH8vqducF95NRSUxtS4fpqxWVaw3Q
V2OWSjbne99A5EPEySzryFTKbMGwaTlAwMCwYevt4YT6eb7NmFhTx0Fis4TalUs+
j+c7Kg92pDx2uQ==
=OBAt
-----END PGP PUBLIC KEY BLOCK-----
EOF
Download the installer
((bedrock))[neil@bedrock ~]$ curl --silent --remote-name "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip"
Download the installer signature file
((bedrock))[neil@bedrock ~]$ curl --silent --remote-name "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip.sig"
Import the public key
((bedrock))[neil@bedrock ~]$ gpg --import awscli-exe-linux-x86_64.zip.pub
gpg: directory '/home/neil/.gnupg' created
gpg: /home/neil/.gnupg/trustdb.gpg: trustdb created
gpg: key A6310ACC4672475C: public key "AWS CLI Team <aws-cli@amazon.com>" imported
gpg: Total number processed: 1
gpg: imported: 1
Verify the installer signature
((bedrock))[neil@bedrock ~]$ gpg --verify awscli-exe-linux-x86_64.zip.sig awscli-exe-linux-x86_64.zip
gpg: Signature made Mon 10 Nov 2025 07:20:50 PM UTC
gpg: using RSA key FB5DB77FD5C118B80511ADA8A6310ACC4672475C
gpg: Good signature from "AWS CLI Team <aws-cli@amazon.com>" [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.
Primary key fingerprint: FB5D B77F D5C1 18B8 0511 ADA8 A631 0ACC 4672 475C
Decompress the installer
((bedrock))[neil@bedrock ~]$ unzip -q awscli-exe-linux-x86_64.zip
Run the installer
((bedrock))[neil@bedrock ~]$ sudo aws/install
Check the version of the AWS CLI
((bedrock))[neil@bedrock ~]$ aws --version
aws-cli/2.31.33 Python/3.13.9 Linux/6.12.0-140.el10.x86_64 exe/x86_64.centos.10
Configure the default profile of the AWS CLI
((bedrock))[neil@bedrock ~]$ aws configure
AWS Access Key ID [None]: AAAAAAAAAAAAAAAA
AWS Secret Access Key [None]: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Default region name [None]: us-east-1
Default output format [None]: json
If you prefer to configure a named profile of the AWS CLI
((bedrock))[neil@bedrock ~]$ aws configure --profile ${PROFILE_NAME}
If you downloaded the access keys as a CSV file
((bedrock))[neil@bedrock ~]$ aws configure import --csv file://credentials.csv
All of these create two configuration files, ~/.aws/config and ~/.aws/credentials
((bedrock))[neil@bedrock ~]$ cat ~/.aws/config
[default]
region = us-east-1
output = json
((bedrock))[neil@bedrock ~]$ cat ~/.aws/credentials
[default]
aws_access_key_id = AAAAAAAAAAAAAAAA
aws_secret_access_key = AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
After creating the bedrock user and configuring the AWS CLI with the access keys for the bedrock user
((bedrock))[neil@bedrock ~]$ aws bedrock list-foundation-models
{
"modelSummaries": [
{
"modelArn": "arn:aws:bedrock:us-east-1::foundation-model/stability.stable-fast-upscale-v1:0",
"modelId": "stability.stable-fast-upscale-v1:0",
"modelName": "Stable Image Fast Upscale",
"providerName": "Stability AI",
<snip>
If you need to create and activate a Python virtual environment, see 2 Software installation
boto3Install the latest version (recommended)
((bedrock))[neil@bedrock ~]$ pip install boto3
Install a specific version 1.0.0
((bedrock))[neil@bedrock ~]$ pip install boto3==1.0.0
Install a version no older than 1.15.0
((bedrock))[neil@bedrock ~]$ pip install boto3>=1.15.0
Install a version no newer than 1.15.3
((bedrock))[neil@bedrock ~]$ pip install boto3<=1.15.3
Create the script
((bedrock))[neil@bedrock ~]$ cat << EOF > list-foundation-models.py
import boto3
import json
bedrock = boto3.client(service_name='bedrock')
response = bedrock.list_foundation_models()
models = response["modelSummaries"]
print( 'Got %s models' % ( len( models ) ) )
for model in models:
print( "# %s\n" % model["modelName"] )
print( json.dumps(model, indent=2 ) )
print( )
EOF
Run the script
((bedrock))[neil@bedrock ~]$ python list-foundation-models.py
Got 105 models
Stable Image Fast Upscale
{
"modelArn": "arn:aws:bedrock:us-east-1::foundation-model/stability.stable-fast-upscale-v1:0",
"modelId": "stability.stable-fast-upscale-v1:0",
"modelName": "Stable Image Fast Upscale",
"providerName": "Stability AI",
"inputModalities": [
"TEXT",
"IMAGE"
],
"outputModalities": [
"IMAGE"
],
"responseStreamingSupported": false,
"customizationsSupported": [],
"inferenceTypesSupported": [
"INFERENCE_PROFILE"
],
"modelLifecycle": {
"status": "ACTIVE"
}
}
----
<snip>
Create the script
((bedrock))[neil@bedrock ~]$ cat << EOF > invoke.py
import boto3
import json
bedrock = boto3.client('bedrock-runtime')
model = "amazon.titan-text-express-v1"
prompt = "Describe the purpose of a Hello World program in one line."
request = {
"inputText": prompt,
"textGenerationConfig": {
"maxTokenCount": 512,
"temperature": 0.5,
"topP": 0.9
}
}
jsonrequest = json.dumps( request )
response = bedrock.invoke_model(modelId=model, body=jsonrequest)
body = json.loads(response["body"].read())
text = body["results"][0]["outputText"]
print( text )
EOF
Run the script
((bedrock))[neil@bedrock ~]$ python invoke.py
The purpose of a Hello World program is to demonstrate the basic functionality of a programming language or environment by printing the phrase "Hello, World!" to the console.
Converse is recommended because it is the basis for multi-turn conversations
((bedrock))[neil@bedrock ~]$ cat << EOF > converse.py
import boto3
bedrock = boto3.client('bedrock-runtime')
model = "amazon.titan-text-express-v1"
message = "Describe the purpose of a Hello World program in one line."
conversation = [
{
"role": "user",
"content": [{"text": message }]
}
]
response = bedrock.converse(
modelId=model,
messages=conversation,
inferenceConfig={ "maxTokens": 512, "temperature": 0.5, "topP": 0.9 }
)
text = response["output"]["message"]["content"][0]["text"]
print( text )
EOF
Run the script
((bedrock))[neil@bedrock ~]$ python converse.py
A Hello World program is a basic computer program that outputs the phrase "Hello, World!" to the console. It is often the first program that new programmers write to learn the basics of a programming language.
Log in with the root account
bedrockbedrockbedrock-usersLog out
bedrockcredentials/cloud.google.com/bedrockcredentials/cloud.google.com/bedrock.pub