Hello have a simple Dockerfile which has to create the DynamoDB tables:
FROM amazon/aws-cli AS seed
CMD
aws dynamodb --endpoint-url http://localhost:8080 create-table
--table-name mytable
--attribute-definitions AttributeName=user_id,AttributeType=N AttributeName=order_id,AttributeType=N
--key-schema AttributeName=user_id,KeyType=HASH AttributeName=order_id,KeyType=RANGE
--provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5
--region eu-west-2
When I’m trying to run it I get the following output:
Attaching to my-container
my-container |
my-container | usage: aws [options] <command> <subcommand> [<subcommand> ...] [parameters]
my-container | To see help text, you can run:
my-container |
my-container | aws help
my-container | aws <command> help
my-container | aws <command> <subcommand> help
my-container |
my-container | aws: error: argument command: Invalid choice, valid choices are:
my-container |
my-container | accessanalyzer | account
my-container | acm | acm-pca
my-container | alexaforbusiness | amp
my-container | amplify | amplifybackend
my-container | amplifyuibuilder | apigateway
my-container | apigatewaymanagementapi | apigatewayv2
// Lot of services in here
my-container | s3 | ddb
my-container | configure | deploy
my-container | configservice | opsworks-cm
my-container | history | cli-dev
my-container | help
my-container |
my-container exited with code 252
What am I doing wrong? Thanks for any help!
2
Answers
In your command you must not have a space after that why maybe you recevie the error because the rest statements is ignored.
Try test again with this :
And also try to have a fake profile, because its need an access key and a secret key even if its locally
With this particular image, the
CMD
must be in JSON-array syntax (one shell word to an array element) and must not contain theaws
command.This is because the aws-cli image declares
ENTRYPOINT ["aws"]
, theENTRYPOINT
andCMD
are combined into a single command, and string-formatCMD
inserts a shell wrapper. Your main container command in the current form is something likeaws sh -c 'aws dynamodb ...'
which the tool doesn’t really understand.(I might run this particular command as a standalone
docker run
command and not try to package it into an image, or possibly use the AWS SDK as part of your integration-test setup code. The explicitlocalhost
endpoint also seems like it might not work well, since that will usually refer to the same container that’s only running the AWS CLI.)