cloudyr / cloudyr/aws.ec2metadata
Reading object in s3 bucket from ecs fargate task
Nobody has claimed this yet.
- Dominant language
- R
- Stars
- 12
- Forks
- 10
- PR merge metrics
- No merged PRs in 30d
Description
Please specify whether your issue is about:
- a possible bug
- a question about package functionality
- a suggested code or documentation change, improvement to the code, or feature request
I have a shiny app running on an ecs fargate task using the rocker:shiny-verse base docker image. I can't read an s3 file
within the initialisation of the shiny app (global.R file). Interestingly it does work when I change the method of serving the app in the docker file.
The docker command that works is:
CMD ["R", "-e", "shiny::runApp('/srv/shiny-server/my_app', 3838, host='0.0.0.0')"]
And the method I want to use but doesn't work:
CMD ["/usr/bin/shiny-server.sh"]
What is the intended method of accessing the permissions granted to the IAM role, how can I read from the s3 bucket within an ecs fargate task?
My global.R file looks like this:
## load package
library(ini)
library("aws.ec2metadata")
Sys.setenv("AWS_DEFAULT_REGION" = "eu-west-2")
if (is_ecs() == T) {
metadata$iam_role("ecsTaskExecutionRole")
}
config = aws.s3::s3read_using(read.ini,
object = 'my_object.ini',
bucket = 'my_bucket')
I can't get the session Info of the Fargate task or any logs but know it's the s3 connection that is failing as removing the
s3_read_using() call allows the app to run as expected. I have also double checked that the ecsTaskExecutionRole has s3 read
permissions required. The bucket also definitely exists and as does the object and it's in the correct region (eu-west-2).
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the global.R example and compare the Dockerfile CMD using shiny::runApp with /usr/bin/shiny-server.sh. Trace aws.ec2metadata::metadata$iam_role, aws.s3::s3read_using, and the ECS task's IAM access, using the available task logs or session information if possible. Done means the intended credential method and a working S3 read from the Fargate task are established.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- aws, docker, r
- Domain
- cloud
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 30/100