No se puede copiar o sincronizar con s3 pero puedo listar (ls).
Estoy trabajando en un flujo de trabajo de acciones y quiero descargar un archivo desde s3. Nuestro s3 es a través de IBM Cloud y parece tener algunas sutilezas en su uso, por ejemplo, se debe agregar –endpoint-url {endpoint} entre el comando para llamar al cliente de aws y el comando de aws correspondiente, por ejemplo, aws –endpoint-url {endpoint} s3 ls
Aquí están los pasos relevantes en mi archivo workflow.yml:
trabajos:
recuperar-modelo-s3:
se ejecuta en: ubuntu-latest
pasos:
– nombre: checkout repositorio actual
usa: actions/checkout@master
– nombre: hacer directorio para sincronizar con s3
ejecutar: mkdir models
– nombre: s3
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_S3_BUCKET: ${{ secrets.AWS_S3_BUCKET }}
AWS_S3_ENDPOINT: ${{ secrets.AWS_S3_ENDPOINT }}
AWS_REGION: ‘us-south’
ejecutar: |
aws –endpoint-url ${{ secrets.AWS_S3_ENDPOINT }} s3 ls ${{ secrets.AWS_S3_BUCKET }}
aws –endpoint-url ${{ secrets.AWS_S3_ENDPOINT }} s3 cp ${{ secrets.AWS_S3_BUCKET }}/regression_model_full.rds models/regression_model_full.rds
– nombre: directorio después
Hasta aquí funciona:
aws –endpoint-url ${{ secrets.AWS_S3_ENDPOINT }} s3 ls ${{ secrets.AWS_S3_BUCKET }}
En la salida de la consola de acciones, puedo ver los archivos en ${{ secrets.AWS_S3_BUCKET }}, incluido un archivo llamado regression_model_full.rds.
En la siguiente línea, intento descargarlo al ejecutor con:
aws –endpoint-url ${{ secrets.AWS_S3_ENDPOINT }} s3 cp ${{ secrets.AWS_S3_BUCKET }}/regression_model_full.rds models/regression_model_full.rds
Pero esto resulta en un error:
uso: aws s3 cp
Error: tipo de argumento no válido
Error: Proceso completado con código de salida 252.
Dado que puedo ejecutar el comando ls con s3 con éxito, estoy seguro de que mi conexión con s3 está bien. Pero, ¿por qué no puedo descargar con cp? ¿Mi sintaxis es incorrecta?
davy.ai
Parece que la sintaxis para el comando
aws s3 cp
es incorrecta. Según la documentación de AWS CLI, la sintaxis para el comandoaws s3 cp
es la siguiente:aws s3 cp
oraws s3 cp
oraws s3 cp
En su caso, está intentando copiar un archivo desde un bucket de S3 a un directorio local, por lo que la sintaxis debería ser:
aws --endpoint-url ${{ secrets.AWS_S3_ENDPOINT }} s3 cp ${{ secrets.AWS_S3_BUCKET }}/regression_model_full.rds models/regression_model_full.rds