fabfuel / ecs-deploy

Powerful CLI tool to simplify Amazon ECS deployments, rollbacks & scaling
Other
843 stars 145 forks source link

Arm support #214

Closed AustinAMeyer closed 7 months ago

AustinAMeyer commented 1 year ago

Hello,

I am having trouble with this not working with ARM in Fargate. Whenever I try to use ecs-deploy to try to deploy a task using ecs-deploy with my ARM tasks it just excludes the text from the json file for ARM. I have the command line I am using below as well.

my command line:

ecs deploy ${clusterName} ${ServiceName} \
              --image ${ServiceName} $ContainerImageURL \
              --task-cpu ${TaskCpu} \
              --cpu ${ServiceName} ${ContainerCpu} \
              --task-memory ${TaskMemory} \
              --memory ${ServiceName} ${ContainerMemory} \
              --profile "${AWS_PROFILE}" 

From my task definition:

"requiresCompatibilities": [
        "FARGATE"
    ],
    "cpu": "256",
    "memory": "512",
    "runtimePlatform": {
        "cpuArchitecture": "ARM64"
    },
mheiges commented 1 year ago

try including --runtime-platform ARM64 LINUX or --runtime-platform ARM64 WINDOWS

AustinAMeyer commented 1 year ago

Hello! Unfortunately, I have tried this and I get the below: Unknown parameter in input: "runtimePlatform", must be one of: family, taskRoleArn, executionRoleArn, networkMode, containerDefinitions, volumes, placementConstraints, requiresCompatibilities, cpu, memory, tags, pidMode, ipcMode, proxyConfiguration, inferenceAccelerators, ephemeralStorage

fabfuel commented 1 year ago

Hi Austin, please try to upgrade boto3 (the AWS SDK) via pip install --upgrade boto3

Does this solve it?

Best Fabian

AustinAMeyer commented 1 year ago

Hello Fabian,

Unfortunately, that didn't seem to fix it either. I am running the ecs-deploy in a pipeline so it should always have the newest version. Here is what I am getting when I add that to my pipeline. I am still getting the same error unfortunately.

Requirement already up-to-date: boto3 in /usr/lib/python2.7/site-packages (1.17.112) Requirement already satisfied, skipping upgrade: jmespath<1.0.0,>=0.7.1 in /usr/lib/python2.7/site-packages (from boto3) (0.10.0) Requirement already satisfied, skipping upgrade: s3transfer<0.5.0,>=0.4.0 in /usr/lib/python2.7/site-packages (from boto3) (0.4.2) Requirement already satisfied, skipping upgrade: botocore<1.21.0,>=1.20.112 in /usr/lib/python2.7/site-packages (from boto3) (1.20.112) Requirement already satisfied, skipping upgrade: futures<4.0.0,>=2.2.0; python_version == "2.7" in /usr/lib/python2.7/site-packages (from s3transfer<0.5.0,>=0.4.0->boto3) (3.4.0) Requirement already satisfied, skipping upgrade: python-dateutil<3.0.0,>=2.1 in /usr/lib/python2.7/site-packages (from botocore<1.21.0,>=1.20.112->boto3) (2.8.2) Requirement already satisfied, skipping upgrade: urllib3<1.27,>=1.25.4 in /usr/lib/python2.7/site-packages (from botocore<1.21.0,>=1.20.112->boto3) (1.26.15) Requirement already satisfied, skipping upgrade: six>=1.5 in /usr/lib/python2.7/site-packages (from python-dateutil<3.0.0,>=2.1->botocore<1.21.0,>=1.20.112->boto3) (1.16.0)

Thanks, Austin

mheiges commented 1 year ago

I usually use Fabian's Docker image.

$ docker run --rm fabfuel/ecs-deploy ecs  --version
ecs-deploy, version 1.14.1
$ docker run --rm fabfuel/ecs-deploy ecs deploy ${CLUSTER_NAME} ${SERVICE_NAME} -t ${GIT_HASH_TAG}   --no-deregister --timeout ${DEPLOY_TIMEOUT} --task sbx1-${SERVICE_NAME} --runtime-platform FAKEARCH LINUX

results in a task definitions with

    "requiresCompatibilities": [
        "FARGATE"
    ],
    "runtimePlatform": {
        "cpuArchitecture": "FAKEARCH",
        "operatingSystemFamily": "LINUX"
    },

the container doesn't start of course because of the invalid arch, but it confirms the value is passing through

fabfuel commented 1 year ago

Hi,

It looks like you are using Python 2? boto3 does not support Python 2 anymore, you are most likely using a two year old version (https://boto3.amazonaws.com/v1/documentation/api/1.17.44/guide/migrationpy3.html#:~:text=Timeline,end%20effective%20July%2015%2C%202021.) which does not support the runtime platform parameter.

What version of boto3 do you currently use?

Best Fabian

fabfuel commented 7 months ago

I assume this one is resolved?!