diff --git a/senza/components/elastigroup.py b/senza/components/elastigroup.py
index 391ee91..c70400e 100644
--- a/senza/components/elastigroup.py
+++ b/senza/components/elastigroup.py
@@ -592,7 +592,7 @@ def _extract_spotinst_access_token(definition: dict):
     """
     extract the provided access token
     """
-    return definition["Mappings"]["Senza"]["Info"].pop("SpotinstAccessToken")
+    return definition["Mappings"]["Senza"]["Info"]["SpotinstAccessToken"]
 
 
 def extract_spotinst_account_id(access_token: str, definition: dict, account_info):

Allow multiple Elastigroup components
When deploying `Senza::Elastigroup` components the `SpotinstAccessToken` property [is being removed](https://github.com/zalando-stups/senza/blob/e9f84724628b4761f8d5da4d37a2993f11d6433b/senza/components/elastigroup.py#L595) from the SenzaInfo dictionary.

If there are multiple `Senza::Elastigroup` components, only the first one will succeed and the remaining fail due to the missing attribute.

diff --git a/tests/test_elastigroup.py b/tests/test_elastigroup.py
index 7213a8b..d5b5221 100644
--- a/tests/test_elastigroup.py
+++ b/tests/test_elastigroup.py
@@ -882,6 +882,7 @@ def test_patch_cross_stack_policy(monkeypatch):
 
         assert definition == test_case["expected_output"]
 
+
 def test_patch_cross_stack_policy_errors():
     # Error case 1 :: Instance profile not in Resources
     with pytest.raises(click.UsageError):
@@ -932,3 +933,48 @@ def test_patch_cross_stack_policy_errors():
             }}
 
         patch_cross_stack_policy(definition, elastigroup_config)
+
+
+def test_multiple_elastigroups(monkeypatch):
+    config1 = {
+        "Name": "eg1",
+        "SecurityGroups": "sg1",
+        "InstanceType": "big",
+        "SpotAlternatives": [
+            "smaller",
+            "small",
+            "small-ish"
+        ]
+    }
+    config2 = {
+        "Name": "eg2",
+        "SecurityGroups": "sg1",
+        "InstanceType": "big",
+        "SpotAlternatives": [
+            "smaller",
+            "small",
+            "small-ish"
+        ]
+    }
+    args = MagicMock()
+    args.region = "reg1"
+    info = {'StackName': 'foobar', 'StackVersion': '0.1', 'SpotinstAccessToken': 'token1'}
+    subnets = ["sn1", "sn2", "sn3"]
+    server_subnets = {"reg1": {"Subnets": subnets}}
+    senza = {"Info": info}
+    mappings = {"Senza": senza, "ServerSubnets": server_subnets}
+    definition = {"Resources": {}, "Mappings": mappings}
+    mock_sg = MagicMock()
+    mock_sg.return_value = "sg1"
+    monkeypatch.setattr('senza.aws.resolve_security_group', mock_sg)
+
+    mock_resolve_account_id = MagicMock()
+    mock_resolve_account_id.return_value = 'act-12345abcdef'
+    monkeypatch.setattr('senza.components.elastigroup.resolve_account_id', mock_resolve_account_id)
+
+    mock_account_info = MagicMock()
+    mock_account_info.Region = "reg1"
+    mock_account_info.AccountID = "12345"
+
+    component_elastigroup(definition, config1, args, info, False, mock_account_info)
+    component_elastigroup(definition, config2, args, info, False, mock_account_info)

pip install -e .[dev]
parse_log_pytest
requirements.txt
pytest pytest-cov mock responses
apt-get update apt-get install -y gcc
3.9
requirements.txt
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
arrow==1.3.0
boto3==1.37.23
botocore==1.37.23
certifi==2025.1.31
charset-normalizer==3.4.1
click==8.1.8
clickclick==20.10.2
coverage==7.8.0
dnspython==2.7.0
exceptiongroup==1.2.2
idna==3.10
importlib_metadata==8.6.1
iniconfig==2.1.0
jmespath==1.0.1
mock==5.2.0
packaging==24.2
pluggy==1.5.0
pystache==0.6.8
pytest==8.3.5
pytest-cov==6.0.0
python-dateutil==2.9.0.post0
PyYAML==6.0.2
raven==6.10.0
requests==2.32.3
responses==0.25.7
s3transfer==0.11.4
six==1.17.0
stups-cli-support==1.1.22
stups-pierone==1.1.56
-e git+https://github.com/zalando-stups/senza.git@e9f84724628b4761f8d5da4d37a2993f11d6433b#egg=stups_senza
stups-tokens==1.1.19
stups-zign==1.2
tomli==2.2.1
types-python-dateutil==2.9.0.20241206
typing==3.7.4.3
urllib3==1.26.20
zipp==3.21.0

name: senza
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.4.4=h6a678d5_1
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=3.0.16=h5eee18b_0
  - pip=25.0=py39h06a4308_0
  - python=3.9.21=he870216_1
  - readline=8.2=h5eee18b_0
  - setuptools=75.8.0=py39h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - tzdata=2025a=h04d1e81_0
  - wheel=0.45.1=py39h06a4308_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - arrow==1.3.0
      - boto3==1.37.23
      - botocore==1.37.23
      - certifi==2025.1.31
      - charset-normalizer==3.4.1
      - click==8.1.8
      - clickclick==20.10.2
      - coverage==7.8.0
      - dnspython==2.7.0
      - exceptiongroup==1.2.2
      - idna==3.10
      - importlib-metadata==8.6.1
      - iniconfig==2.1.0
      - jmespath==1.0.1
      - mock==5.2.0
      - packaging==24.2
      - pluggy==1.5.0
      - pystache==0.6.8
      - pytest==8.3.5
      - pytest-cov==6.0.0
      - python-dateutil==2.9.0.post0
      - pyyaml==6.0.2
      - raven==6.10.0
      - requests==2.32.3
      - responses==0.25.7
      - s3transfer==0.11.4
      - six==1.17.0
      - stups-cli-support==1.1.22
      - stups-pierone==1.1.56
      - stups-tokens==1.1.19
      - stups-zign==1.2
      - tomli==2.2.1
      - types-python-dateutil==2.9.0.20241206
      - typing==3.7.4.3
      - urllib3==1.26.20
      - zipp==3.21.0
prefix: /opt/conda/envs/senza

tests/test_elastigroup.py::test_multiple_elastigroups
tests/test_elastigroup.py::test_component_elastigroup_defaults tests/test_elastigroup.py::test_raw_user_data_and_base64_encoding_cf_function_used tests/test_elastigroup.py::test_missing_access_token tests/test_elastigroup.py::test_spotinst_account_resolution tests/test_elastigroup.py::test_spotinst_account_resolution_failure tests/test_elastigroup.py::test_block_mappings tests/test_elastigroup.py::test_auto_scaling_rules tests/test_elastigroup.py::test_detailed_monitoring tests/test_elastigroup.py::test_prediction_strategy tests/test_elastigroup.py::test_autoscaling_capacity tests/test_elastigroup.py::test_product tests/test_elastigroup.py::test_standard_tags tests/test_elastigroup.py::test_extract_subnets tests/test_elastigroup.py::test_load_balancers tests/test_elastigroup.py::test_multiple_target_groups tests/test_elastigroup.py::test_public_ips tests/test_elastigroup.py::test_extract_image_id tests/test_elastigroup.py::test_extract_security_group_ids tests/test_elastigroup.py::test_missing_instance_type tests/test_elastigroup.py::test_extract_instance_types tests/test_elastigroup.py::test_extract_instance_profile tests/test_elastigroup.py::test_patch_cross_stack_policy tests/test_elastigroup.py::test_patch_cross_stack_policy_errors
senza/components/elastigroup.py
senza/components/elastigroup.py